我是C++的新手,我刚刚学到了重载操作符。我很困惑,因为我似乎可以将一个对象分配给另一个对象,而不必重载"=“操作符。以下面的代码为例:
class process
{
int size;
public:
process(int s)
{
size = s;
}
~process();
int getSize()
{
return size;
}
};
int main()
{
process p1(2);
process p2(3);
p1 = p2;
std::cout << p1.getSize() << "\n";
}产出如下:
3
如您所见,process类"p2“中的信息被复制到"p1”中,但我还没有重载"=“操作符。为什么会发生这种情况?有什么地方我可以得到一些具体的信息,关于C++为这种情况做了什么?谢谢。
发布于 2020-07-01 03:25:26
为什么我可以在不重载“=”操作符的情况下将一个对象分配给另一个对象?
因为类具有隐式生成的副本(和移动)赋值运算符。
,有什么地方可以让我知道C++是怎么做到的呢?
授权信息来源是标准文件。
Books也写过关于C++的文章。
,但是为什么我要重载"=“操作符呢?
没有理由要重载示例类的赋值运算符。
一般来说,您可能想要超载,因为
编译器生成的赋值操作符
编译器还隐式地生成析构函数。您不需要为类定义析构函数。
https://stackoverflow.com/questions/62669166
复制相似问题