demo r=h;
这种定义是调用了拷贝构造函数,而不是复制函数。
强烈建议不要使用这种风格的。而是使用demo r(h);
如果类中需要动态申请内存,则要非常小心处理拷贝构造函数和复制函数。
使用默认的拷贝构造函数或者复制函数可能会出现两个变量指向同一个对象
如果上面的代码中没有拷贝构造函数
那么
demo h("zct");
demo r=h;
那么变量r和h中的指针p都将指向同一个位置,在变量释放的时候调用析构函数,会执行两个free p;
这有可能带来灾难性的后果。(第一次释放p后,系统把这块内存又分配给其他申请的,再一次释放p,就出问题了。