当类的成员变量为字符串的时候,注意深拷贝-创新互联
#include#include #strcpy using namespace std; class String{ public: String(const char* str = NULL): m_str(strcpy(new char[strlen(str?str:"")+1], str?str:"")){} ~String(){ if(m_str){ delete [] m_str; m_str = NULL; } } //拷贝构造 String(const String& that): m_str(strcpy(new char[strlen(that.m_str)+1],that.m_str)){} //拷贝赋值,成员变量m_str为指针为指针时,要注意深拷贝,这里为深拷贝 String& operator=(const String& that){ if(&that != this){ char* = new char[strlen(that.m_str)+1]; delete[] m_str;//先释放旧资源 m_str = strcpy(str,that.m_str); } return *this; } friend ostream& operator<<(ostream& os,const String&c){ os << c.m_str; return os; } //c接口 const char* c_str(void)const{ return m_str; } public: char* m_str; }; int main(void){ String s1("hello,world"); cout << s1 << endl; return 0; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
10年建站经验, 成都网站设计、成都网站建设客户的见证与正确选择。创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。当前标题:当类的成员变量为字符串的时候,注意深拷贝-创新互联
本文URL:http://pwwzsj.com/article/icpsc.html