c++中虚析构函数的使用(除析构顺序正确性外)
Uses of a Virtual destructor in C++(other than desctruction order correctness)
每个c++程序员都知道,虚析构函数用于确保继承层次结构中对象的正确析构顺序。
在其他实时场景中使用/可以使用"虚拟析构函数"的地方?
你的假设是不正确的;为virtual
时,不影响破坏顺序。那总是从大多数派生类到基类。会影响实际调用哪些析构函数!如果不将析构函数声明为虚函数,那么从大多数派生析构函数开始的整个析构函数链可能永远不会被调用。
class A { ... }; // base class
class B: public A { ... }; // derived class
class C: public B { ... }; // further derived
A* ABCFactory() { return new C; }
A* a = ABCFactory();
delete a; // undefined behavior as destructors C and B are skipped
相关文章:
- 优先顺序:智能指针和类析构函数
- C++成员的析构函数顺序与shared_ptr
- C++:使用方法调用析构函数的顺序是什么?
- 有没有办法保证析构函数的相对顺序?
- std::unique_ptr析构函数顺序
- C++销毁顺序:在类析构函数之前调用字段析构函数
- 构造函数和析构函数的顺序
- 析构函数的顺序
- 析构函数的奇怪调用顺序
- 共享指针析构函数中的内存顺序
- C++-销毁顺序-函数的静态成员在主类析构函数之前被销毁
- 更改析构函数顺序
- 在C++中为临时库调用析构函数的顺序是什么
- 构造函数和析构函数调用的顺序
- 析构函数调用的顺序C++
- 没有调用C++析构函数,具体取决于链接顺序
- 在C++中,析构函数的调用顺序和成员变量的销毁顺序是什么
- 如何强制实施析构函数的调用顺序
- c++中虚析构函数的使用(除析构顺序正确性外)
- 如果在stl容器中传递用户定义的对象,对象的析构顺序是什么?