我想通过在线教程学习C++ OOP概念,其中我遇到了一个说明运算符重载的代码片段。为什么这个操作符重载工作?
的代码如下所示:
class MyClass{
int var;
public:
Myclass(int value=0){
var = value;
}
Myclass operator+(Myclass &obj){
Myclass newobj;
newobj.var = this->var + obj.var;
return newobj;
}
};
假设我称之为运营商的主要功能如下所示:
int main(){
...
obj3 = obj2 + obj1;
...
}
在上类前面的教程中,我读到为什么拷贝构造函数需要所有参数要通过引用传递,因为它们本身就是如何复制两个类对象的定义。所以,就我所知,复制构造函数是必须的,因为必须复制类的对象。
在上面的代码片段中,在我看来,编译器会尝试将newobj的值“复制”到main()函数(obj3)中的L_value上。但是,如果没有定义拷贝构造函数,这怎么可能呢?我在这里误解了一些东西吗?
谢谢你的帮助!
编译器将为您定义一个默认的拷贝构造函数。 – melpomene
在某些情况下,编译器会为您生成一个副本ctor和复制赋值运算符。 – Borgleader
相关:http://stackoverflow.com/questions/12577907/default-copy-constructor – user463035818