假设我有一个对象。我将它分配给一个整数。
MyClass obj1 = 100;//Not valid
假设我有一个接受整数的参数化构造函数。
MyClass(int Num)
{
// .. do whatever..
}
MyClass obj1 = 100;//Now, its valid
同样在任何情况下,相反的情况是否有效?!
eg) int Number = obj1;//Is it VALID or can be made valid by some tweeks
修改:
我发现这可以使用转换函数。 转换函数通常称为“强制转换运算符”,因为它们(以及构造函数)是使用强制转换时调用的函数。
转换函数使用以下语法:
operator conversion-type-name()
例如)很多人已经在下面整理了
答案 0 :(得分:6)
是的,前提是该对象可以直接或通过中间对象隐式转换为int
。
E.g。如果您的班级有转化operator int
,则可以使用:
MyClass
{
public:
operator int() const { return 200; }
};
答案 1 :(得分:2)
只有一个参数的C ++构造函数会自动执行隐式类型转换。这就是从int转换为MyClass的原因。要创建从MyClass到int的转换,您必须在MyClass中定义operator int()
。
答案 2 :(得分:2)
Yes you can, using user defined conversions.
在MyClass中,定义operator int()
所以
class MyClass
{
int myVal;
public:
operator int() { return myVal;}
}
答案 3 :(得分:0)
是的,您需要将转换运算符添加到MyClass
operator int();
答案 4 :(得分:0)
MyClass不是整数,因此您不能int Number = obj1;
你应该在MyClass中有一个返回int的方法或操作符(由其他人声明)。 (int number = obj1.GetNum();
)