构造函数的难点问题,求指教
这段代码的运行结果是这样的:demo 默认构造函数 0
demo 默认构造函数 0
rec 默认构造函数 1000
析构函数
析构函数
析构函数
我疑惑的是为什么当我申明rec的对象时会调用 demo的默认构造函数,而且还是两次,请高人点拨,不胜感激!
#include <iostream>
using namespace std;
class demo
{
public:
demo(){ x=0; cout<<"demo默认构造函数..."<<"\t"<<x<<endl;}
demo(int i){x=i;cout<<"带一个参数的默认构造函数"<<"\t"<<x<<endl;}
~demo(){cout<<"析构函数..."<<"\t"<<x<<endl;}
int get(){return x;}
void set(int i){x=i;}
private:
int x;
};
class rec
{
public:
rec(){x=1000;cout<<"rec默认构造函数..."<<"\t"<<x<<endl;}
rec(int i,int j,int k):x(i),width(j),length(k)
{
cout<<"rec带三个参数的构造函数..."<<" "<<"面积为:"<<width.get()*length.get()<<endl;
}
~rec(){cout<<"析构函数..."<<"\t"<<x<<endl;}
private:
int x;
demo width;
demo length;
};
void main()
{
rec a;