【发布时间】:2014-02-23 15:42:34
【问题描述】:
如果有人问过这个问题,我深表歉意。我正在编写一个将与 python 交互的 c++ 类。到目前为止的类实现是:
struct body_data
{
map <int, atom*> atoms;
map <int, bond*> bonds;
map <int, dihedral*> dihedrals;
};
这个类是另一个类的基类。我没有为这个类添加析构函数,因为我很困惑。在我读过的所有关于基类的析构函数的帖子中,他们建议析构函数应该是公共虚拟的或受保护的。由于我不打算在 c++ 代码或 python 接口中多态地使用上述类,我真的需要将析构函数设为公共虚拟或受保护吗?我正在考虑将这个类公开,这样程序员就知道永远不要多态地使用这个类。我的想法对吗?
【问题讨论】:
-
创建 3 个类。上面有一个受保护的析构函数,一个从上面继承并且没有其他更改(但不是继承自)的类,以及从上面继承并做其他事情的第三个类。这意味着如果有人删除一个指向基址的指针,他们会得到一个错误:这很好,因为有两个不同的类是指向基址的有效指针,而错误地删除它们是未定义的行为。
标签: python c++ destructor