当类的成员变量为字符串的时候,注意深拷贝-创新互联

#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年建站经验, 成都网站设计、成都网站建设客户的见证与正确选择。创新互联提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
网站名称:当类的成员变量为字符串的时候,注意深拷贝-创新互联
文章链接:http://bzwzjz.com/article/icpsc.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 营销型网站建设 梓潼网站设计 成都网站建设公司 网站建设开发 网站建设 广安网站设计 网站设计 高端网站设计 成都网站制作 阿坝网站设计 成都网站制作 成都网站设计 app网站建设 成都网站设计 网站设计公司 成都网站建设 营销网站建设 成都网站建设 网站制作 成都企业网站建设 网站制作公司 响应式网站设计