什么是抄袭的对象是什么意思? 什么是复制构造函数和复制赋值运算符? 我什么时候需要自己申报? 如何防止复制对象? 介绍 C ++使用值语义处理用户定义类型的变量。这意味着对象被隐式复制到各种上下文中,我们应该理解“复制对象”实际意味着什么。 让我们考虑一个简单的例子: class person { std::string name; int age; public: person(const std::string& name, int age) : name(name), age(age) { } }; int main() { person a("Bjarne Stroustrup", 60); person b(a); // What happens here? b = a; // And here? } (如果您对该name(name), age(age)部分感到困惑,则将其称为成员初始化列表。) 特别会员功能 复制person对象意味着什么?该main功能显示两种不同的复制方案。初始化person b(a);由复制构造函数执行。它的工作是根据现有对象的状态构造一个新对象。赋值b = a由复制赋值运算符执行。它的工作通常稍微复杂一些,因为目标对象已经处于某种需要处理的有效状态。 由于我们自己既没有声明复制构造函数也没有声明赋值运算符(也没有声明析构函数),因此这些都是为我们隐式定义的。从标准引用: