我写了下面的c++代码,试图理解c++中的复制省略。
这将产生以下输出:
我不太理解为什么每次给对象 ob 赋值时都会调用构造函数三次。涉及 IT 技术相关内容。
#include <iostream>
using namespace std;
class B
{
public:
B(int x ) //default constructor
{
cout << "Constructor called" << endl;
}
B(const B &b) //copy constructor
{
cout << "Copy constructor called" << endl;
}
};
int main()
{
B ob =5;
ob=6;
ob=7;
return 0;
}
这将产生以下输出:
Constructor called
Constructor called
Constructor called
我不太理解为什么每次给对象 ob 赋值时都会调用构造函数三次。涉及 IT 技术相关内容。
int
可以通过构造函数B(int)
隐式转换为B
,因此该构造函数在所有三行中都被调用。如果没有复制省略,则第一行也可以调用复制构造函数(B(const B&)
)。 - David GB(int x)
不是默认构造函数。默认构造函数是B()
。 - user2249683