我有一个基础类
class piece;
Run Code Online (Sandbox Code Playgroud)
以及包含派生对象的数组
piece* board[8][8];
Run Code Online (Sandbox Code Playgroud)
优势,通过虚拟功能进行清洁设计.缺点,如果我必须在板上找到一块或比较一件我必须恢复到动态铸造(或typeid).它很丑陋,在制作数百万个请求时可能会很糟糕.
另一方面,如果我创建一个单件类的数组,它有一个用于识别片段的类型字段,我没有这个问题(它应该更快)但我必须制作超级丑陋的switch语句.我想,由于件数是有限的,我不认为自己制造了那么多开关,这可能最终是一个更好的选择,你怎么看?
这很有趣(所以没有位板).
编辑1
阅读一些答案,我认为仅使用类型字段进行运算符重载(==,!= ...)可以带来两个单词的最佳效果.
boost :: variant看起来也很有趣.