想知道是否有人可以解释为什么unique_ptr打破了继承访问器,例如:
class Base {
};
class Derived : private Base {
};
int main() {
Base* pointer = new Derived;
return 0;
}
这将正确导致编译时错误,因为Derived使用private关键字从Base继承。因此Derived之外的任何人都不应该知道Derived和Base之间的关系。但如果我这样做:
unique_ptr<Base> pointer = unique_ptr<Base>(new Derived);
而不是:
Base* pointer = new Derived;
代码编译并运行正常......