分配子对象

时间:2016-09-25 07:45:11

标签: c++

分配子对象的正确方法是什么?例如:

B

这可行(或恰好工作?),但很尴尬,并依赖于knn布局的假设。那么,正确的方法是什么?

2 个答案:

答案 0 :(得分:3)

通常,您不分配子对象。它在概念上是错误的,并且违反了继承应该如何工作。如果你需要这个,也许你有错误的抽象,真的想要组合:

struct B {
    A a;
};

std::unique_ptr<B> bp{new B{}};
A a{12, 13};
bp->a = a;

答案 1 :(得分:3)

这可能稍微更惯用:

bp->A::operator=(a);

这种事情很少见,所以很难说。一般来说,你可以越多地避免演员表现越好,但是在这种情况下进行明确的演员表可能很有用,可以清楚地表明你正在做一些与众不同的事情。