在 C++11 中,默认函数和已删除函数使你可以显式控制是否自动生成特殊成员函数。已删除的函数还可为您提供简单语言,以防止所有类型的函数(特殊成员函数和普通成员函数以及非成员函数)的参数中出现有问题的类型提升,这会导致意外的函数调用。
显式默认设置的函数和已删除函数的好处
在 C++ 中,如果某个类型未声明它本身,则编译器将自动为该类型生成默认构造函数、复制构造函数、复制赋值运算符和析构函数。这些函数称为特殊成员函数,它们使 C++ 中的简单用户定义类型的行为如同 C 中的结构。也就是说,可以创
复制构造函数和复制赋值运算符
从 C++ 11 中开始,该语言支持两种类型的分配:复制赋值和移动赋值。 在本文中,“赋值”意味着复制赋值,除非有其他显式声明。 赋值操作和初始化操作都会导致对象被复制。
赋值:在将一个对象的值赋给另一个对象时,第一个对象将复制到第二个对象中。 因此,
Point a, b;
...
a = b;
导致 b 的值被复制到 a 中。
初始化:在以下情况下将进行初始化:声明新对象、参数通过值传递给函数或值通过值从函数返回。
您可以为类类型的对象定义“复制”的语义。