【发布时间】:2021-04-25 14:14:15
【问题描述】:
我正在努力提高编写 C++ 代码的能力,并想知道这样的事情是否可行:
我在一个指令集中有 256 条指令。 它们都具有完全不同的行为但具有共同的属性,因此我考虑创建 256 个特定类,这些类将继承一个称为指令的通用类。 然后我想将每个类的构造函数(或者,甚至一对构造函数)存储到一个大小为 256 的数组中,并通过执行以下操作简单地创建指令: 指令 instr = constructorsOPCode;
这可能吗?这是解决这个问题的好方法吗?
【问题讨论】:
-
没有和没有(尽管使用 256 数组是完全合理的)。第一个否是因为您不能在任何地方存储构造函数,它们不是常规函数。当然,您可以使用常规函数作为“构造函数”。第二个不,因为您的方法会受到对象切片的影响。创建派生类型对象后,您将分配给基类型,因此您将丢失所有派生类型信息。也许这是您设计的一部分,在这种情况下,我想知道是否有派生类型。只需要基本类型和构造基本类型版本的函数。
-
您可能想研究一个工厂模式。
-
您可以阅读a good C++ programming book 和这个C++ reference 并使用C++ lambda expressions。 从现有开源 C++ 项目中汲取灵感(例如FLTK、RefPerSys、fish、Qt....)
-
使用巨大的 switch 语句有什么问题?我认为,除非您提供一个具体示例来说明您要实现的目标,否则任何事情都会摆在桌面上,这听起来像是 XY 问题。
标签: c++ arrays class constructor