C++知识点之赋值运算符相关

在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算符。但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符,这样的对象就不能通过值传递,也不能进行赋值运算。例如下面的例子

class Person
{
public:
    Person(){}
    Person(const Person& p)=delete;
    Person& operator=(const Person& p)=delete;
};
Person::Person(const Person& p)
{

}
int main()
{
    Person p1;
    Person p2(p1);
    p2=p1;
   
}

如果调用拷贝或者赋值操作就会提示这是已经删除的操作。
2:阻止拷贝
C++中有两种方法来阻止对象的拷贝,使用delete或者声明私有函数,例如:

class Person
{
public:
    Person(){}
private:
    Person(const Person& p);
    Person& operator=(const Person& p);
};

3:不可重载的操作符有哪些?(?:,::)

你可能感兴趣的:(C++知识点之赋值运算符相关)