C++ 为什么赋值运算符重载会创建对象的副本?

C++ 为什么赋值运算符重载会创建对象的副本?,c++,class,operator-overloading,copy-constructor,C++,Class,Operator Overloading,Copy Constructor,在下面给出的代码中,我已经在所有类构造函数、析构函数和重载赋值运算符中编写了cout语句 包括 使用名称空间std; 班主任{ 字符串名; 智力年龄; int-id; 静态整数; 公众: 人名字符串名称,整数年龄:姓名,年龄{ id=num++; cout这是因为运算符=看起来像这样: const person operator= (const person &other) 在这种情况下,const实际上没有意义 实际上,您的意思是通过常量引用返回: const person&

在下面给出的代码中,我已经在所有类构造函数、析构函数和重载赋值运算符中编写了cout语句

包括 使用名称空间std; 班主任{ 字符串名; 智力年龄; int-id; 静态整数; 公众: 人名字符串名称,整数年龄:姓名,年龄{ id=num++; cout这是因为运算符=看起来像这样:

const person operator= (const person &other)
在这种情况下,const实际上没有意义

实际上,您的意思是通过常量引用返回:

const person& operator= (const person &other)

那一个&将带来所有的不同。

wow!它确实带来了所有的不同。我不再创建不需要的对象。非常感谢您的洞察力。您能详细说明我在以前的代码中创建副本的具体位置吗?是在返回此副本时还是在将此副本分配给其他对象时?不客气。如果您愿意,y您可以对该答案进行投票,或者如果该答案解决了您的问题,请单击旁边的复选标记,将其标记为已接受。@VisheshArya我认为您不能投票是正确的,但是如果您现在不能选择该答案,您应该可以很快完成该操作。您应该用复选标记显示如何解决问题的答案为了向未来的提问者表明该问题已成功回答。@VisheshArya建议阅读一些能够回答您的一些问题的阅读材料:@VisheshArya您能详细说明我在以前的代码中创建副本的具体位置吗?-当按值返回*时,将为要返回的对象创建副本。更改return value from person to person&您不应该从operator=返回常量以避免复制。
const person& operator= (const person &other)