构造函数

发布时间:2014-10-22 12:46:04编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"构造函数",主要涉及到构造函数方面的内容,对于构造函数感兴趣的同学可以参考一下。

构造函数   默认构造函数和复制构造函数   复制构造函数一般不用写,编译器会自动生成。 在这种情况下使用   string name = “sfsf”; string tmp = name ;//使用复制构造函数   也可string tmp(name);   如果重载了=   string name = “sfsf”; string tmp = name ;//使用复制构造函数   string name2 = “sfsf”; string tmp2; tmp2= name ;//使用重载=函数   但是如果类中有指针类型的成员数据,则必须自己重新写 复制构造函数和赋值函数,因为默认的复制构造函数和赋值函数只是简单的复制,对于指针他们只是复制了指针的地址,这样导致了两个对象内部的指针变量公用同一个内存空间,会出现内存泄漏,非法指针等许多问题。   如下: class Test {          char* str;          Test(const& Test a) {          str = new char[strlen(a.str)+1];          strcpy(str, a.str); } Test& operator=(const Test& a) {          str = new char[strlen(a.str)+1];          strcpy(str, a.str);          return (*this); } }   当然也可以将复制构造函数和赋值函数声明为private,禁止他人调用,这时就不能用=了,同时对private的复制构造函数和赋值函数不用提供具体的实现,链接器不会去寻找它们的实现。        


上一篇:IOCP完成端口与长连接通讯
下一篇:时间

相关文章

关键词: 构造函数

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款