这一页检查并给出了如何动态加载和使用类的非常清晰的示例,但有一些我很难理解的内容:
我明白为什么需要“创建”功能,但为什么需要“销毁”功能?为什么没有将接口析构函数声明为纯虚拟函数?
我做了一个相同的例子,除了:
~polygon() = 0;
Run Code Online (Sandbox Code Playgroud)
的析构函数triangle是:
triangle::~triangle() {
std::cout << "triangle Dtor is called" <<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
然后当我使用时:
delete poly;
Run Code Online (Sandbox Code Playgroud)
该消息确实显示(Linux 下的 GCC 5.4.0)。
我试图寻找其他示例,但它们都提到并使用“销毁”函数,没有使用简单的纯虚拟析构函数的示例,这使我相信我在这里遗漏了一些东西,所以..它是什么?
不想使用销毁函数的背景是我想在 a 中使用分配的对象shared_ptr并且以后不关心它的生命周期,使用“销毁”函数会很棘手,因此我需要知道是否有必要。
我有一个脚本循环遍历python中的几个搜索/替换正则表达式,其中一个操作是删除我尝试过的尾随空格:
re.sub(r"""\s+$""", '', str)
re.sub(r""" +$""", r"""""", str)
Run Code Online (Sandbox Code Playgroud)
和
re.sub(r""" +$""", r"""""", str, re.M)
Run Code Online (Sandbox Code Playgroud)
我发现几个答案只是建议使用strip我的问题是我想在正则表达式替换机制中集成它.