【C/C++】为什么需要复制构造函数的同时通常也需要重载复制操作符

假设有一个类,需要实例中的c属性保持唯一

那么:就需要构造函数生成唯一的c值;同时用另外一个实例新建一个实例,也就要保持唯一,那么就需要拷贝函数分配唯一值;同时我们也可能将一个类的实例赋值给另外一个实例,但是默认复制运算构造函数不能保证唯一


#include
#include
#include

using namespace std;

class CopyStruct {
public:
    CopyStruct();
    CopyStruct(const CopyStruct &);
    CopyStruct& operator=(const CopyStruct &c);
    static int b;
    int c=0;

};
CopyStruct::CopyStruct(){

    this->b=this->b+1;
    c=this->b;

}

CopyStruct::CopyStruct(const CopyStruct &c){
    b=b+1;
    this->c=b;


}
//如果这里注释掉,就会出现c,b实例的c值是同样的
CopyStruct& CopyStruct::operator=(const CopyStruct &c){
    return *this;
}
int CopyStruct::b =10;
int main()
{
    CopyStruct a;
    CopyStruct b;
    CopyStruct c=b;
    std::cout<    c=b;
    std::cout<<"默认复制构造函数之后:"</*
 map arrays;
 arrays["name"]="cccc";
  std::cout< using name=const char *;

 name a="this is a aliaes";
 std::cout<*/
}



请使用浏览器的分享功能分享到微信等