相关疑难解决方法(0)

多态(继承)和值类型

我有一堆的类型,PixelMeasure,PointMeasure,CentimeterMeasure等等,这表示与一个单元的值.我希望他们有

  • 值语义:例如有效不可变,不必担心内存分配,以及
  • 多态性:我可以返回一个类型的对象,Measure并且可以对它进行操作,而不知道它是什么类型的.我还希望能够将多个不同的Measures放入容器中.

看来这些在C++中是互斥的.对于多态,我需要使用指针或引用.

我看到两个选择:

  • 使用智能指针,例如shared_ptr.这给了我想要的行为(安全,没有原始指针,但是多态调度).缺点是:
    • 它很冗长(如果我真的想要,我可以将它隐藏在typedef后面).
    • 你有内存分配(但代码不是性能关键,而是隐藏起来).
    • 语义很奇怪 - 我的对象(shared_ptr<PixelMeasure>)的副本将共享相同的底层指针.我仍然可以假装它具有值语义 - 如果我使接口不可变,那应该没关系.
  • 我想简单说一下不使用继承(没有共同的基类),并通过模板调度 - 但在这种情况下,我需要知道确切的措施那种在编译的时候,不能把它们放到容器中.
  • 我可以摆脱类的干脆只使用一个类,使用值和单位场 - 但是这将是少了很多灵活,使用语法会更糟糕,所以我宁愿避免这种情况.

有任何想法吗?

c++ polymorphism value-type

4
推荐指数
2
解决办法
1220
查看次数

标签 统计

c++ ×1

polymorphism ×1

value-type ×1