【发布时间】:2013-06-05 11:30:49
【问题描述】:
实现从自定义类到 POD 或其他类型的转换非常简单。它在自定义类本身中实现为以目标类型命名的运算符。像这样,
operator int{ return anInt; }
反过来呢?例如,我可以将 int 重载为自定义类类型转换吗?
【问题讨论】:
标签: c++ overloading
实现从自定义类到 POD 或其他类型的转换非常简单。它在自定义类本身中实现为以目标类型命名的运算符。像这样,
operator int{ return anInt; }
反过来呢?例如,我可以将 int 重载为自定义类类型转换吗?
【问题讨论】:
标签: c++ overloading
你可以,但你做的不同,为你的类提供一个以基本类型作为参数的构造函数:
class X {
public:
X(int) {}
};
void f(X const &x) { }
int main(){
f(2); // allowed -- will construct an X, then pass it to `f`.
}
请注意,在某些情况下,这可能会导致意外转换 - 通常认为最好将此类构造函数标记为 explicit 以防止它们被使用,除非您明确强制转换。
【讨论】:
MyCustomClass object = 2; 将使用构造函数,但作为一个独立的语句,object = 2; 是一个赋值,它将使用重载的赋值运算符。
MyCustomClass object = (MyCustomClass)(2) 会调用什么,或者只是编译器错误?
MyCustomClass 或 2 周围的括号就足够了——你不需要两者都需要) .
使用单参数构造函数
MyClass(int n) :anInt(n) {}
【讨论】: