#include <iostream> using namespace std; // 拷贝(复制)构造函数 // // // By Evel struct NoName { NoName(): pstring(new string()), i(0), d(0),bb(6) { } //构造函数 NoName(const NoName&);//合成拷贝构造函数的声明;通常有const修饰 void get(){cout << pstring << endl;} //输出是地址。 private: //NoName(const NoName&);//声明私private的但是不使用拷贝构造函数是可以的。但是不能被使用。这样就防止的复制 string *pstring; int i; double d; const int bb; }; //合成拷贝构造函数,利用初始化式对数据进行成员逐个拷贝 NoName::NoName(const NoName& a1):pstring(a1.pstring),i(a1.i),d(a1.d),bb(a1.bb) { } /* NoName::NoName(const NoName& a1):bb(a1.bb) //必须要用初始化式对const以及引用类型的进行初始化 { pstring=a1.pstring; i=a1.i; d=a1.d; //bb=a1.bb; } */ void main() { NoName a1; a1.get(); NoName a2=a1; //如果定义了private类型的拷贝构造函数,那么将出错。否则可行。 a2.get(); //cout << a1.pstring << endl; }