当一个operator函数被实现为一个成员函数时,大多数操作数必须是operator 左边的操作数是可变的,那么为什么编译器没有发送错误
提前谢谢.... #include<iostream>
using namespace std;
class ffloat {
private:
float a;
public:
ffloat():a(34.566){}
operator int () {
return a=static_cast<int >(a);
}
};
int main() {
ffloat w;
int x;
x=w;
cout<<x<<endl;
}
答案 0 :(得分:2)
operator int()
是转换函数,其唯一的操作数是隐含的&#39;这个&#39;论点。因此x=w
没有违反规则,因为x不是转换的操作数。这部分是为什么写int(w)
这里没有丢失操作数的原因。您所指的规则是关于&#39; + - * /&#39;等运营商的规则。它可以有2个操作数。
答案 1 :(得分:0)
实际上,a=static_cast<int >(a)
表示a
应该从float a
转换为整数,然后将其作为整数返回。
一切都有效,您的运营商int
应该返回int