gpt4 book ai didi

c++ - 为什么C++类可以等于一个变量

转载 作者:行者123 更新时间:2023-12-05 08:36:27 25 4
gpt4 key购买 nike

我有这个代码:

#include <iostream>
using namespace std;

class complex
{
double re;
double im;

public:
complex(): re(0), im(0) {}
complex(double x) {re = x, im = x;}
complex(double x, double y) {re=x, im =y;}
void print() {cout << re << " " << im;}
};

int main()
{
complex c1;
double i=2;
c1 = i;
c1.print();

return 0;
}

我的问题是,为什么这一行中的代码可以编译。

c1 = i;

编译器没有给出错误(或警告),为什么?

最佳答案

让我们检查一下行中发生了什么。

c1 = i;

发生的事情是 operator=class complex 调用,在本例中为 is implicitly defined .

/////////////////////////////////////
//implicit copy assignment operator//
/////////////////////////////////////

complex& operator=(const complex& cmp)
{
//the default implicit function of this operator is copying every member of cmp into this.
}

所以它以const complex&为参数,它可以绑定(bind)到complex类型的右值,然后编译器搜索是否有接受的构造函数double 参数,所以表达式解析为.

c1 = complex(i);

这显然是可以执行的。

关于c++ - 为什么C++类可以等于一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69013489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com