在c ++中是否有标准的"int类"?

Val*_*ond 8 c++ oop int class

c ++是否有(或多或少)标准int类?

如果不是这样,是否计划说C++ 13,如果不是这样,是否有任何特殊原因?

我猜想OOP设计会从中受益,例如,在返回int的自定义类中有一个赋值运算符会很好:

int i=myclass;
Run Code Online (Sandbox Code Playgroud)

并不是

int i=myclass.getInt();
Run Code Online (Sandbox Code Playgroud)

好的,有很多可能有用的例子,为什么不存在(如果没有)?

它适用于航位推算和其他滞后补偿方案,并将这些值视为"正常"变量将是好的,无论如何!

Mik*_*our 20

在返回int的自定义类中有一个赋值运算符会很好

您可以使用转换运算符执行此操作:

class myclass {
    int i;
public:
    myclass() : i(42) {}

    // Allows implicit conversion to "int".
    operator int() {return i;}
};

myclass m;
int i = m;
Run Code Online (Sandbox Code Playgroud)

您通常应该避免这种情况,因为额外的隐式转换可能会引入歧义,或者隐藏类型系统可能会捕获的类别错误.在C++ 11中,您可以通过声明运算符来阻止隐式转换explicit; 然后该类可用于初始化目标类型,但不会隐式转换:

int i(m);    // OK, explicit conversion
i = m;       // Error, implicit conversion
Run Code Online (Sandbox Code Playgroud)

  • 当您想要使用转换运算符时,您必须三思而后行,因为它们会使您的代码变得不那么明显 (6认同)
  • @Alecs:OP必须至少考虑三次为什么他想要这样的*语义*. (2认同)

Mar*_*k B 5

如果要允许类隐式转换为int,则可以使用隐式转换运算符(operator int()),但一般而言,隐式转换会导致更多问题和调试,而不是易于使用.

  • 显式转换在C++ 11中. (2认同)