[英]C++11 object composition with abstract classes
假设我有一个Foo类,它具有抽象类Bar的const成员,那么在构造函数中传递Bar来初始化const成员的正确方法是什么?
class Foo
{
public:
Foo(?Bar? bar): bar(?bar?) {};
private:
const ?Bar? bar;
}
在C ++ 11中,我正在考虑像这样使用std :: unique_ptr:
class Foo
{
public:
Foo(std::unique_ptr<Bar> &bar): bar(std::move(bar)) {};
private:
const std::unique_ptr<Bar> bar;
}
这是最好的方法吗? 还有哪些其他方式?何时应使用它们?
在...
struct Foo
{
public:
Foo(std::unique_ptr<Bar> &bar): bar(std::move(bar)) {};
const std::unique_ptr<Bar> bar;
};
... bar(指针)不可修改,但指向的值是可修改的。
这是你想要的吗?
我宁愿认为:
class Foo
{
public:
Foo(std::unique_ptr<const Bar>& bar): bar(std::move(bar)) {}
private
std::unique_ptr<const Bar> bar;
};
会更合适,因为该值不是真正恒定的。 我怀疑这不会编译,因为unique_ptr无法调用析构函数(自定义删除程序的规范浮现在脑海),但是直方图指向的值是const,这正是您真正想要的(我怀疑)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.