构造函数和复制构造函数的顺序

Order of constructor and copy constructor

本文关键字:构造函数 顺序 复制      更新时间:2023-10-16

有人可以告诉我为什么在这种情况下程序使用复制构造函数和析构函数吗?

#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==按值获取其参数。

按值获取意味着副本。

让它改用常量引用,就像你对复制构造函数所做的那样。