gpt4 book ai didi

c++ - 为什么会发生这种转变?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:12 25 4
gpt4 key购买 nike

#include<iostream>

using namespace std;

class test
{
int a, b;
public:

test() {
a=4; b=5;
}

test(int i,int j=0) {
a=i; b=j;
}

test operator +(test c) {
test temp;
temp.a=a+c.a;
temp.b=b+c.b;
return temp;
}

void print() {
cout << a << b;
}
};

int main() {
test t1, t2(2,3), t3;
t3 = t1+2;
t3.print();
return 0;
}

编译器如何接受像 t3=t1+2; 这样的语句,其中 2 不是对象?

最佳答案

编译器看到您正在调用 operator+(test) 并尝试使用您的 成功地将 2 隐式转换为 test test(int i,int j=0) 构造函数。

如果要显式转换,必须将构造函数更改为explicit test(int i, int j=0)。在这种情况下,您的代码会生成编译器错误,因为 2 无法隐式转换为 test。您需要将表达式更改为 t1 + test(2)

关于c++ - 为什么会发生这种转变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417724/

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