copy_constructor复制构造函数1-创新互联
#include
#include
using namespace std;
class name{
public:
name(char *pn);
~name();
name::name(const name& n);
protected:
char *pname;
int size;
};
name::name(char *pn){
cout << "constructing" << pn << endl;
pname = new char[strlen(pn) + 1];
if (pname != 0)
strcpy_s(pname, strlen(pn) + 1, pn);
size = strlen(pn);
}
name::~name(){
cout << "Destructing" << pname << endl;
pname[0] = '\0';
delete[]pname;
size = 0;
}
name::name(const name& n){//拷贝构造函数。
cout << "call copy_constructor" << endl;
int size = n.size+1;
pname = new char[size ];//为其临时对象申请个内存。让临时对象的指针指向它。
//防止释放临时对象时把原来的对象的指针所指空间给弄乱
strcpy_s(pname, size,n.pname);//两个参数不好办,用三个参数。
}
void main(){
name Obj1("NoName");
cout << "strlen(\"NoName\")=" << strlen("NoName") << endl;
name Obj2 = Obj1;
system("pause");
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:copy_constructor复制构造函数1-创新互联
浏览地址:http://scyanting.com/article/dsdsee.html