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:不可重载的操作符有哪些?(?:,::)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容