构造函数和复制构造函数的顺序
Order of constructor and copy constructor
有人可以告诉我为什么在这种情况下程序使用复制构造函数和析构函数吗?
#include <iostream>
#include <iomanip>
using namespace std;
class Object
{
public:
Object(){}
Object(const Object &kk) {cout<<"kk"<<endl;}
bool operator==(Object c)
{
cout<<"o=="<<endl; return false;
}
~Object()
{
cout<<"des"<<endl;
}
};
int main()
{
Object o1,o2;
bool result;
result = (o1==o2);
}
结果是:
kk
o==
des
提前感谢您的回答。
因为你的operator==
按值获取其参数。
按值获取意味着副本。
让它改用常量引用,就像你对复制构造函数所做的那样。
相关文章:
- 类内初始化与构造函数初始化列表的顺序
- 运算符 new 的执行顺序和构造函数的参数
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 构造函数中没有参数的对象类成员按什么顺序初始化?
- 用作成员构造函数参数的函数的求值顺序
- 函数中调用的构造函数的顺序
- 构造函数中初始化列表的计算顺序是否固定?
- 构造函数和析构函数的顺序
- 遵循 C++ 中的构造函数执行顺序
- 更改操作的构造函数顺序
- 构造函数的初始值设定项列表中的函数调用是否按顺序排序?
- 如何维护类成员的顺序,并且仍然有一个可工作的构造函数
- 在继承中更改构造函数的顺序
- C++:初始值设定项列表顺序中的构造函数
- 如何在使用 std::make_tuple 时避免构造函数的未定义执行顺序
- 程序不会按照构造函数进行顺序进行,从而导致非初始化的变量
- 构造函数的调用顺序
- 构造函数和析构函数调用的顺序
- C++构造函数顺序
- 虚拟继承构造函数顺序