【C/C++】C++虚析构函数的作用
2010-01-25 19:10
274 查看
1、作用
为了在实现多态的时候不造成内存泄露,
如果基类析构函数前不加vitual,派生类对象被销毁后,只会调用基类的析构函数,而不会去调用派生类的析构函数。
2、对于正常的函数,如果基类中声明为virtual,则派生类可以不用再写virtual
结果:
Base Func!
Derived Func!
Derived2 Func!
Base Destructor!
Derived Destructor!
Base Destructor!
Derived2 Destructor!
Derived Destructor!
Base Destructor!
为了在实现多态的时候不造成内存泄露,
如果基类析构函数前不加vitual,派生类对象被销毁后,只会调用基类的析构函数,而不会去调用派生类的析构函数。
2、对于正常的函数,如果基类中声明为virtual,则派生类可以不用再写virtual
// CPPTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" class Base { public: Base(){} virtual ~Base() { printf("Base Destructor!/n"); } virtual void Func() { printf("Base Func!/n"); } private: int m_iData; }; class Derived : public Base { public: Derived(){} ~Derived() { printf("Derived Destructor!/n"); } void Func() { printf("Derived Func!/n"); } }; class Derived2 : public Derived { public: Derived2(){} ~Derived2() { printf("Derived2 Destructor!/n"); } void Func() { printf("Derived2 Func!/n"); } }; int main(int argc, char* argv[]) { Base *pb = new Base; pb->Func(); Base *pd = new Derived; pd->Func(); Base *pd2 = new Derived2; pd2->Func(); delete pb; delete pd; delete pd2; return 0; }
结果:
Base Func!
Derived Func!
Derived2 Func!
Base Destructor!
Derived Destructor!
Base Destructor!
Derived2 Destructor!
Derived Destructor!
Base Destructor!
相关文章推荐
- c++ 虚析构函数的作用分析
- C++ 构造函数和析构函数的调用顺序、虚析构函数的作用
- C++虚析构函数的作用
- C++虚析构函数的作用
- C++中 虚函数 虚析构函数的作用
- C++虚析构函数的作用
- c++虚析构函数的作用
- c++虚析构函数的作用
- C++ 虚析构函数的作用
- C++的虚析构函数的作用
- C++ virtural关键字和虚析构函数作用
- C++虚析构函数的作用
- C++ 虚析构函数的作用
- C++虚析构函数的作用
- C++虚析构函数的作用
- C++虚析构函数的作用
- C++ 构造函数和析构函数的调用顺序、虚析构函数的作用
- C++继承中构造函数、析构函数调用顺序及虚析构函数
- C++ 引用的作用和用法
- C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。