C ++ 中类赋初值的方法

作者在 2010-07-02 20:11:37 发布以下内容
#include "dd.h"
#include <iostream.h>

class A {
private:
     const   int x;
     enum { num =10};
    static int y,z;
    int arr[num];
public:
   A (int val = 0):x(val)
    {
        for (int i=0;i<x;i++)
        {
            arr[i] = i;
        }
        cout<<"static value1 A::y = "<<y<<endl;
        y = 0;
        cout<<"static value2 A::y = "<<y<<endl;
    }
    ~A(){cout<<"destructor..."<<endl;}
    void printf();
};

void A::printf()
{
    y = 121;
    cout<<"const value A::x = "<<x<<endl;
    cout<<"static value A::y = "<<y<<endl;
    cout<<"static value A::z = "<<z<<endl;
    for (int i=0;i<num;i++)
        cout<<arr[i]<<"\t"<<endl;
}


int A::y =120;
int A::z =130;

int main()
{
    A a(5) ;
    a.printf();

    A b(4) ;
    b.printf();

    i = 12;
    return 0;
}

 
基础知识 | 阅读 1599 次
文章评论,共5条
vfdff(作者)
2010-07-02 22:31
1
#include &lt;stdio.h&gt;<br />
#include &lt;iostream.h&gt;<br />
<br />
class A {<br />
private:<br />
<br />
//public:<br />
&nbsp; &nbsp;int size;<br />
&nbsp; &nbsp;int first,last;<br />
 <br />
public:<br />
&nbsp; &nbsp; A (int f = 0,int l=0):first(f),last(l),size(f-l) {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;last = l;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;size = first-last;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cout&lt;&lt;&quot;first=&quot;&lt;&lt;first&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;last=&quot;&lt;&lt;last&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;size=&quot;&lt;&lt;size&lt;&lt;endl; <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cout&lt;&lt;&quot;constructor A...&quot;&lt;&lt;endl;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; ~A(){cout&lt;&lt;&quot;destructor A...&quot;&lt;&lt;endl;}<br />
&nbsp; &nbsp; inline void printf();<br />
};<br />
<br />
class B : public&nbsp;&nbsp;A {<br />
&nbsp; &nbsp; int temp;<br />
public:<br />
&nbsp; &nbsp; B ( int t=0 ,int f=0,int l=0) : temp(t),A(temp,l)<br />
&nbsp; &nbsp; { <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; A (temp,l);<br />
//&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;temp = t;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//cout&lt;&lt;&quot;first=&quot;&lt;&lt;first&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;last=&quot;&lt;&lt;last&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;size=&quot;&lt;&lt;size&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;temp=&quot;&lt;&lt;temp&lt;&lt;endl; <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cout&lt;&lt;&quot;constructor B...&quot;&lt;&lt;endl;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; ~B(){cout&lt;&lt;&quot;destructor B...&quot;&lt;&lt;endl;}<br />
&nbsp; &nbsp; void printf();<br />
};<br />
<br />
inline void A::printf()<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;first=&quot;&lt;&lt;first&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;last=&quot;&lt;&lt;last&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;size=&quot;&lt;&lt;size&lt;&lt;endl; <br />
}<br />
<br />
void B::printf()<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;temp=&quot;&lt;&lt;temp&lt;&lt;&quot;\t&quot;; <br />
&nbsp; &nbsp; A::printf();<br />
}<br />
<br />
int main()<br />
{<br />
&nbsp; &nbsp; A a(10,20) ; <br />
&nbsp; &nbsp; a.printf();<br />
 <br />
&nbsp; &nbsp; B b(3,9,27) ;<br />
&nbsp; &nbsp; b.printf();<br />
<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;sizeof(A)=&quot;&lt;&lt;sizeof(A)&lt;&lt;&quot;\t&quot;&lt;&lt;&quot;sizeof(B)=&quot;&lt;&lt;sizeof(B)&lt;&lt;endl; <br />
&nbsp; &nbsp; return 0;<br />
}
vfdff(作者)
2010-07-02 22:36
2
#include &lt;stdio.h&gt;<br />
#include &lt;iostream.h&gt;<br />
<br />
class Base {<br />
private:<br />
public:<br />
&nbsp; &nbsp;int x;<br />
public:<br />
&nbsp; &nbsp; Base (int initialValue=0):x(initialValue) { } <br />
&nbsp; &nbsp; Base&amp; operator= (const Base&amp; );<br />
&nbsp; &nbsp; void printf();<br />
&nbsp; &nbsp; void f(int x){};<br />
};<br />
<br />
class Derived : public&nbsp;&nbsp;Base {<br />
&nbsp; &nbsp; int y;<br />
public:<br />
&nbsp; &nbsp; Derived (int initialValue=0,int b=0):Base(initialValue),y(b) { };<br />
&nbsp; &nbsp; Derived&amp; operator = (const Derived&amp;&nbsp;&nbsp;);<br />
&nbsp; &nbsp; void printf();<br />
&nbsp; &nbsp; void f(char* str){};<br />
};<br />
<br />
<br />
<br />
Base&amp; Base::operator= (const Base&amp; rhs)<br />
{<br />
&nbsp; &nbsp; if (this==&amp;rhs)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return *this;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; x = rhs.x;<br />
&nbsp; &nbsp; return *this; <br />
}<br />
<br />
Derived&amp; Derived::operator = (const Derived&amp; rhs)<br />
{<br />
&nbsp; &nbsp; if (this==&amp;rhs)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return *this;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; Base::operator = (rhs) ;&nbsp;&nbsp;// 调用 this-&gt;Base::operator=(rhs)<br />
&nbsp; &nbsp; //x = rhs.x;<br />
&nbsp; &nbsp; y = rhs.y;<br />
&nbsp; &nbsp; return *this; <br />
}<br />
<br />
void Base::printf()<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;x=&quot;&lt;&lt;x&lt;&lt;endl; <br />
}<br />
<br />
void Derived::printf()<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;y=&quot;&lt;&lt;y&lt;&lt;&quot;\t&quot;; <br />
&nbsp; &nbsp; Base::printf();<br />
}<br />
<br />
<br />
void putout(int x){}<br />
void putout(float x){}<br />
void putout(double x){}<br />
<br />
int main()<br />
{<br />
&nbsp; &nbsp; Derived d0(0,2) ; <br />
&nbsp; &nbsp; d0.printf();<br />
&nbsp; &nbsp; Derived d1(1,3) ; <br />
&nbsp; &nbsp; d1.printf();<br />
<br />
 <br />
&nbsp; &nbsp; d0 = d1;<br />
&nbsp; &nbsp; d0.printf();<br />
<br />
&nbsp; &nbsp; Base *pd = new Derived;<br />
&nbsp; &nbsp; pd-&gt;f(10);<br />
<br />
&nbsp; &nbsp; putout(0.1);<br />
&nbsp; &nbsp; return 0;<br />
}
vfdff(作者)
2010-07-02 22:45
3
#include &lt;stdio.h&gt;<br />
#include &lt;iostream.h&gt;<br />
<br />
class Base {<br />
private:<br />
public:<br />
&nbsp; &nbsp;int i;<br />
public:<br />
&nbsp; &nbsp; Base (int initialValue=0):i(initialValue) { } <br />
&nbsp; &nbsp; virtual int sum() const { <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cout&lt;&lt;&quot;base&quot;&lt;&lt;endl;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return i;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; void printf();<br />
&nbsp; &nbsp; void f(int x){};<br />
};<br />
<br />
class Derived : public&nbsp;&nbsp;Base {<br />
&nbsp; &nbsp; int j;<br />
public:<br />
&nbsp; &nbsp; Derived (int initialValue=0,int b=0):Base(initialValue),j(b) { };<br />
&nbsp; &nbsp; int sum() const {<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cout&lt;&lt;&quot;Derived&quot;&lt;&lt;endl;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return Base::sum()+j;<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; void printf();<br />
&nbsp; &nbsp; void f(char* str){};<br />
};<br />
<br />
void call(Base b)<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;sum=&quot;&lt;&lt;b.sum() &lt;&lt;endl; <br />
}<br />
<br />
void tune(Base* b)<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;sum=&quot;&lt;&lt;b-&gt;sum() &lt;&lt;endl;<br />
}<br />
void Base::printf()<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;i=&quot;&lt;&lt;i&lt;&lt;endl; <br />
}<br />
<br />
void Derived::printf()<br />
{<br />
&nbsp; &nbsp; cout&lt;&lt;&quot;j=&quot;&lt;&lt;j&lt;&lt;&quot;\t&quot;; <br />
&nbsp; &nbsp; Base::printf();<br />
}<br />
<br />
<br />
int main()<br />
{<br />
&nbsp; &nbsp; Base b(10);<br />
&nbsp; &nbsp; Derived d(10,47);<br />
&nbsp; &nbsp; call(b);<br />
&nbsp; &nbsp; call(d);<br />
<br />
&nbsp; &nbsp; tune(&amp;b);<br />
&nbsp; &nbsp; tune(&amp;d);<br />
<br />
&nbsp; &nbsp; return 0;<br />
}
vfdff(作者)
2010-07-02 22:46
4
#include &lt;iostream&gt;<br />
using namespace std;<br />
<br />
<br />
const int i =99;<br />
class Z {<br />
<br />
private:<br />
&nbsp; &nbsp; int aa<i>;<br />
&nbsp; &nbsp; int ii ;&nbsp;&nbsp;<br />
&nbsp; &nbsp; <br />
protected:<br />
&nbsp; &nbsp; int aaa<i>;<br />
&nbsp; &nbsp; int iii&nbsp;&nbsp;;&nbsp;&nbsp;<br />
public:<br />
&nbsp; &nbsp; //enum { i = 7 };<br />
&nbsp; &nbsp; int a<i>;<br />
&nbsp; &nbsp; int f()&nbsp;&nbsp;<br />
&nbsp; &nbsp; { <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;ii = 3;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//i0 = 4;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return i;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; enum { i = 7 };<br />
&nbsp; &nbsp;&nbsp;&nbsp;//static&nbsp;&nbsp;int i0 ;<br />
};<br />
<br />
Z z;<br />
<br />
int main()<br />
{<br />
//&nbsp; &nbsp;&nbsp; &nbsp; z.i0 = 3;<br />
//&nbsp; &nbsp;&nbsp; &nbsp;Z :: i0 = 4;<br />
&nbsp; &nbsp; cout &lt;&lt; z.f() &lt;&lt;endl;<br />
 //&nbsp; &nbsp;cout &lt;&lt;&nbsp;&nbsp;z.i &lt;&lt;&quot; &quot; &lt;&lt;sizeof(z.a)&lt;&lt;endl;<br />
&nbsp; &nbsp; return 0;<br />
}
vfdff(作者)
2010-08-08 00:33
5
//&nbsp; &nbsp; 2006.7.25<br />
<br />
#include &lt;stdio.h&gt;<br />
<br />
<br />
class A {<br />
&nbsp; &nbsp; public :<br />
&nbsp; &nbsp; virtual void printOn(){}&nbsp; &nbsp;//&nbsp;&nbsp;纯虚函数,实现多态性<br />
};<br />
<br />
class B : public A { //定义一个类 B,为类&nbsp;&nbsp;A 的公共继承<br />
&nbsp; &nbsp; public:<br />
&nbsp; &nbsp; virtual void printOn() {puts(&quot;\nClass B&quot;);}<br />
};<br />
<br />
class C : public B {<br />
&nbsp; &nbsp; public:<br />
&nbsp; &nbsp; virtual void printOn() {puts(&quot;\nClass C&quot;);}<br />
};<br />
<br />
void Show(A *a)<br />
{<br />
&nbsp; &nbsp; a-&gt;printOn();<br />
}<br />
<br />
void main()<br />
{<br />
&nbsp; &nbsp; B *b = new B;<br />
&nbsp; &nbsp; Show(b);&nbsp; &nbsp;&nbsp;&nbsp;// B::printOn()<br />
&nbsp; &nbsp; C *c = new C;<br />
&nbsp; &nbsp; Show(c);&nbsp; &nbsp;&nbsp;&nbsp;// C::printOn()<br />
&nbsp; &nbsp; delete b;<br />
&nbsp; &nbsp; delete c;<br />
<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; b = new C;<br />
&nbsp; &nbsp; Show(b);&nbsp; &nbsp;&nbsp;&nbsp;// C::printOn()<br />
&nbsp; &nbsp; c = (C *) new B;<br />
&nbsp; &nbsp; Show(c);&nbsp; &nbsp;&nbsp;&nbsp;// B::printOn()<br />
&nbsp; &nbsp; delete b;<br />
&nbsp; &nbsp; &nbsp; &nbsp; delete c;<br />
}
游客请输入验证码
浏览1966880次