这不包括由cornercase 这个(虽然有趣的信息在其中设置).我的代码如下所示:
struct concept {
virtual ~concept() = default;
};
struct policy {
protected :
~policy() = default;
};
struct implementation final : concept, policy {
};
Run Code Online (Sandbox Code Playgroud)
如果我只通过指针使用此层次结构concept
:
unique_ptr<concept> = make_unique<implementation>();
Run Code Online (Sandbox Code Playgroud)
以上安全吗?
我相信这是因为,如果有人试图通过指针删除policy
的protected
析构函数不会允许它(从招Modern C++ design
),但没有休息,做工精细?(即当删除指向概念的指针时,保证被正确调用的层次结构的析构函数?)
由于~concept()
是虚拟的,当你delete
通过concept
指针对象时,它会调用~implementation()
.
我没有看到任何理由为什么其余的不会像他们应该的那样工作.
归档时间: |
|
查看次数: |
147 次 |
最近记录: |