代码之家  ›  专栏  ›  技术社区  ›  Akaanthan Ccoder

我能把一个对象赋给一个整数变量吗?

c++
  •  1
  • Akaanthan Ccoder  · 技术社区  · 16 年前

    假设我有个目标。我把它赋给一个整数。

    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
    

    编辑 :

    我发现这是可能的使用 转换函数通常被称为“cast操作符”,因为它们(连同构造函数)是在使用cast时调用的函数。

    运算符转换类型名称()

    5 回复  |  直到 16 年前
        1
  •  6
  •   CB Bailey    16 年前

    是的,前提是对象可以隐式转换为 int ,直接或通过中间对象。

    例如,如果你的班级有转换 operator int

    MyClass
    {
    public:
        operator int() const { return 200; }
    };
    
        2
  •  2
  •   Nikola Smiljanić    16 年前

    只有一个参数的C++构造函数自动执行隐式类型转换。这就是为什么从int到MyClass的转换是有效的。要创建从MyClass到int的转换,必须定义 operator int() 在我的班级里。

        3
  •  2
  •   Alan    16 年前

    Yes you can, using user defined conversions.

    在MyClass中,定义运算符int()

    所以呢

    class MyClass
    {
     int myVal;
    
    public:
    operator int() { return myVal;}
    
    }
    
        4
  •  0
  •   Gary    16 年前

    是的,您需要向MyClass添加转换运算符

    运算符int();

        5
  •  0
  •   RvdK    16 年前

    MyClass不是整数,因此您不能 int Number = obj1; 在MyClass中应该有一个返回int的方法或运算符(由其他人声明)( int number = obj1.GetNum();