C++ 深/浅拷贝

2019-03-10  本文已影响0人  hey白启明

举例

class String {
private:
    char * str;
public:
    String() :str(NULL) { }
    const char * c_str() const { return str; };
    String & operator = (const char * s);
    ~String();
};
String s1, s2;
s1 = "this";
s2 = "that";
s2 = s1;
String & String::operator = (const String & s)
{
    if(str == s.str)
        return * this;
    if(str)
        delete[] str;
    if(s.str){  //s. str不为NULL才执行复制操作
    str = new char[ strlen(s.str) + 1 ];
        strcpy(str, s.str);
    }
    else
        str = NULL;
    return * this;
}

参考资料

上一篇下一篇

猜你喜欢

热点阅读