关闭

(C++)虚析构函数

156人阅读 评论(0) 收藏 举报
分类:

基类:Per

继承类:Stu

主函数:

Per *p = new Stu;

delete p;


如果 ~Per()  //析构函数没有声明为虚函数

则不会调用Stu类的析构函数,只调用~Per()


如果 vritual ~Per()     //虚析构函数

则也会调用Stu类的析构函数。

0
0
查看评论

C++中虚析构函数的作用及其原理分析

参考http://blog.csdn.net/xiamentingtao/article/details/55517203 C++中的虚析构函数到底什么时候有用的,什么作用呢。 一.虚析构函数的作用 总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说...
  • derkampf
  • derkampf
  • 2017-03-15 00:13
  • 1849

C++ 中 父类的虚 析构函数_legend

     C++  父类虚析构函数  (1)C++虚函数 :  1). C++ 多态 :  将子类对象指针赋值给父类指针,然后通过父类指针来调用  子类中重写的虚函数。  如果在重...
  • legend050709
  • legend050709
  • 2014-05-14 19:03
  • 1621

C++ 多重继承,虚析构确定

来个例子就明了了: #include using namespace std; class Base1 { public: virtual ~Base1(){ cout<<"Base1"<<endl; } }; class ...
  • wdkirchhoff
  • wdkirchhoff
  • 2015-02-05 08:53
  • 1019

C++虚析构函数及纯虚析构函数

C++中析构函数可以为纯虚吗? 众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢? class CBase { public: CBase() { printf("...
  • ywcpig
  • ywcpig
  • 2016-09-14 23:40
  • 330

基类的纯虚析构函数一定要予以实现

纯虚函数 纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。 虚函数是C++语言的精髓。含有纯虚函数的类被称为抽象类,不能被实例化生成对象,只能派生。由它派生的类的纯虚函数如果没有被实现,那么,...
  • friendbkf
  • friendbkf
  • 2015-05-17 18:59
  • 1979

C++虚析构函数使用场景

1、什么是虚函数和多态 虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,也就是运行时多态,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 编译器对每个包含...
  • u010721235
  • u010721235
  • 2016-09-20 15:13
  • 261

纯虚析构函数必须给出定义

Effective C++ 条歀07:为多态基类声明virtual析构函数(Declare destructors virtual in polymorphic base classes) 纯虚函数 纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚...
  • wl1070325332
  • wl1070325332
  • 2017-03-08 17:18
  • 376

C++中虚析构函数的作用(1)(转)

★★什么时候要用虚析构函数★★通过基类的指针来删除派生类的对象时,基类的析构函数应该是虚的。否则其删除效果将无法实现。一般情况下,这样的删除只能够删除基类对象,而不能删除子类对象,形成了删除一半形象,从而千万内存泄漏。原因:在公有继承中,基类对派生类及其对象的操作,只能影响到那些从基类继承下来的成员...
  • rhzwan123
  • rhzwan123
  • 2008-03-05 21:08
  • 4137

C++类的析构函数调用和虚析构函数

析构函数一般是自动调用的,但是某些情况下页需要显式调用,如出栈和入栈操作: void C::push_back(const X& a) { // ... new(p) X{a}; // copy constr uct an X with the value a in address p //...
  • kenden23
  • kenden23
  • 2013-11-13 08:48
  • 1688

关于虚继承和析构函数的一个奇怪的问题

class A{ public : int _a1; int _b; void virtual f(){}; }; class B:virtual public A{ public: int _b; ~B(){}; //line1 void virtual f(){}...
  • ShiZhixin
  • ShiZhixin
  • 2015-07-17 10:33
  • 797
    个人资料
    • 访问:2596次
    • 积分:207
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条