问一个构造函数和复制构造函数的问题
updd 2004-11-02 12:10:07 我的类是这么定义的。
class Ex
{
private:
int num;
const char *pStr;
public:
Ex(int x,const char *p)
{
num=x;
pStr=p;
cout<<"Constructing"<<x<<"..."<<endl;
}
Ex(const Ex& tmp)
{
num=tmp.num;
pStr=tmp.pStr;
cout<<"Copy constructing"<<tmp.num<<"..."<<endl;
}
~Ex()
{
cout<<"destructing..."<<endl;
}
};
主函数是
void main()
{
Ex x(1,"abcd"),y(2,"asdg");
Ex z[2]={Ex(3,"asdf"),Ex(4,"sdgasdg")};
}
问题就是:
如果我没有那个析构函数~Ex(),那么就会显示调用了两次复制构造函数。
Constructing1...
Constructing2...
Constructing3...
Copy constructing3...
Constructing4...
Copy constructing4...
但定义了那个析构函数~Ex()后,就没有调用那两次复制构造函数了。
Constructing1...
Constructing2...
Constructing3...
Constructing4...
destructing...
destructing...
destructing...
destructing...
为什么啊?