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