首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于 构造函数解决办法

2012-08-01 
关于 构造函数代码如下:class test{private:int aint bpublic:test(int x,int y):a(x),b(y){couttest

关于 构造函数
代码如下:
class test
{
private:
int a;
int b;
public:
test(int x,int y):a(x),b(y){cout<<"test construct...."<<endl;}
test():a(0),b(0){cout<<"test default construct...."<<endl;}
void show(){cout<<"a:"<<a<<" "<<"b:"<<b<<endl;}
void show1(int x,int y){cout<<"x"<<x<<" "<<"y"<<y<<endl;}
~test(){};
};

class demo
{
protected:
test t;
private:
int a;
int b;
int c;
public:
demo(int x,int y,int z):a(x),b(y),c(z){cout<<"demo construct...."<<endl;}
void show(int x,int y){t.show1(x,y);}
};

int main() 
{
  demo tr(1,3,4);
tr.show(1,4);
return 0;
}

运行结果是:
test default construct :这个默认构造函数是在哪个地方调用的呢??
demo construct 
x1 y4

[解决办法]
class demo
{
protected:
test t;//就是这个t构造的
private:
int a;
int b;
int c;
public:
demo(int x,int y,int z):a(x),b(y),c(z){cout<<"demo construct...."<<endl;}
void show(int x,int y){t.show1(x,y);}
};
[解决办法]
和继承差不多的原理。test作为demo的成员,在
demo()//default constructor
中被自动初始化,即调用test()//default constructor

热点排行