【发布时间】:2012-01-13 02:33:36
【问题描述】:
不讨论这是否是一个好主意,如果他们将内置的 C++ 数据类型封装到自己的类中,将会面临什么样的缺点(性能或其他方面)。例如,与 Java 和 C# 类似,int 数据类型将有自己的名为 Int 的类,并使用内联运算符对其进行重载。与 Single、Double、Long 等相同。
【问题讨论】:
-
我可以问相反的问题吗?有什么优势?
-
与所有此类“透明”包装器一样,
operator&的语义将是双输局面。 -
一个优点是您可以让它们继承基类。 Int32:整数:数字:对象。当您不想重载具有多种类型的 Math 类时,这可能很有用,而只需 Integer 或 Real 就足够了。这也允许您将新类型添加到类型族中,例如添加 Int128 不会影响数学类。
-
@Dave:那么
Integer或Number允许哪些操作?在我看来,或多或少有两种选择:要么根本没有(这将使其完全一文不值),要么所有操作都实现为虚拟方法(这将对性能产生严重影响)。此外,这不是我们有模板的用途吗? -
你确定让他们继承基类是一个优势吗?无论如何,您可以使用模板编写类型通用代码。数学课有什么用? “数学对象”的含义是什么?如果您尝试使用 C++ 制作 Java 或 C#,请不要这样做。我建议你改用learn C++。
标签: c++ performance optimization compiler-construction