如果方法应该返回 B
类型的对象,为什么在方法 B minus
中返回 int
会起作用?
#include <iostream>
class B
{
public:
int a;
public:
B(int i=0)
{
a=i;
}
B minus()
{
return (1-a);
}
};
int main()
{
B x(18);
x = x.minus();
std::cout << x.a << '\n';
return 0;
}
最佳答案
具有单个参数的构造函数被视为转换构造函数。当需要 X 类型的参数并给出 Y 类型时,编译器将查找从 Y 到 X 的转换构造函数(或类型转换运算符)。在这种情况下,它会使用您的 B 找到一个(int)
构造函数。本质上,您的 return (1-a);
更改为 return B(1-a);
.
正如在其他几个(也是正确的)答案中提到的,如果您不希望构造函数被视为转换构造函数,则应在其前面加上 explicit
关键字。
关于c++ - 为什么在应该返回对象的方法中返回 int 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663521/