将基本数据类型封装到类中

Dav*_*ave 1 c++ compiler-construction optimization performance

在不讨论它是否是一个好主意的情况下,如果要将内置C++数据类型封装到它们自己的类中,那么将面临什么类型的缺点(性能或其他方面).例如,类似于Java和C#,int数据类型将拥有自己的类Int,使用内联运算符重载它.与Single,Double,Long等相同

Pub*_*bby 5

没有任何好处.您无法实现相同的行为,也无法实现绩效.


缺点:

  • 性能永远不会比内置类型更快.你得到的最好的是一个类,其中所有内容都内联到内置类型代码,虽然这是什么意思?
  • 更多代码无用
  • 虚拟呼叫有开销
  • 无法实现相同的行为,例如与运营商(主要是铸造)
  • 非平凡的构造函数(不一定在C++ 11中)
  • C++功能(如模板参数)不支持
  • 混乱.没有人这样做.

当您不希望在只有Integer或Real就足够的情况下使用多种类型重载Math类时,这可能很有用.

你的Java陷入了困境.

C++采用模板方法:

template<typename A_type, typename B_type>
auto math_operation(A_type a, B_type b) -> decltype(a + b * 2) {
  return a + b * 2;
}
Run Code Online (Sandbox Code Playgroud)

现在您有一个适用于任何支持正确运算符的类型的函数.这适用于内置类型和类等Int128.