我可以将对象分配给整数变量吗?

时间:2010-06-14 06:35:59

标签: c++

假设我有一个对象。我将它分配给一个整数。

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()

例如)很多人已经在下面整理了

5 个答案:

答案 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();