`
vearne
  • 浏览: 18896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

has virtual functions but non-virtual destructor

 
阅读更多

 

#include <iostream>
using namespace std;
class based{
public:
	based(){
	}
	~based(){
		 cout<<"flag 1"<<endl;
	}
	virtual void f(){
		cout<<"ok1"<<endl;
	}
};
class derived:public based{

public:
	~derived(){
		cout<<"flag 2"<<endl;
	}
	void f(){
		cout<<"ok2"<<endl;
	}
};
int main(){
based* p = new derived();
p->f();
delete p;
	
}

 

输出结果:

ok2

flag 1

 

指向基类的指针,delete p;只调用基类的析构函数,没有调用派生类的析构函数。

 

分享到:
评论

相关推荐

    Selected.Topics.in.Cplusplus.15117

    Then you have virtual functions and virtual tables and virtual pointers. When you know these core concepts C++ becomes a powerful language to use because you can control your program to do exactly ...

    game-destructor:由GitHub Classroom创建的game-destructor

    在"game-destructor-master"这个压缩包中,通常会包含以下内容: 1. **源代码文件**:项目的主要代码通常位于`.pde`文件中,这是Processing项目的主文件。在这里,你可以找到定义图形绘制函数、事件处理以及游戏...

    Computer Destructor-开源

    "Computer Destructor-开源"是一个独特的项目,其名称可能带有一些幽默成分,暗示它是一个能够模拟或演示计算机系统破坏过程的程序。开源软件指的是该程序的源代码是公开的,允许用户查看、修改和分发代码,这符合...

    Cookie DestrucTor-开源

    Cookie DestrucToR是一款专为保护用户网络隐私设计的开源软件。在信息化时代,我们的网络活动留下了大量的数据足迹,其中Cookie是最常见的形式之一。Cookie是网站为了追踪用户行为、个性化体验以及保持登录状态等...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    We can declare (but not define) functions with arguments, and/or return values, of type Foo. (One exception is if an argument Foo or const Foo& has a non-explicit, one-argument constructor, in which ...

    FlexGraphics_V_1.79_D4-XE10.2_Downloadly.ir

    - FIX TTreeInspector.FDelimBmp don't removed in destructor. - FIX TFlexPanel.FIsOverSegment flag take into account now the pen width. - ADD TFlexEllipse.Center - read-only public property. - FIX Trial...

    ruby-destructor:Ruby 的析构函数

    gem 'destructor' 然后执行: $ bundle 或者自己安装: $ gem install destructor 用法 require 'destructor' class Foo attr_reader :bar def initialize @bar = 123 end def finalize puts ...

    delphi2-delphi2010 全支持 dcu 装换 pas

    But if a record has any variant parts in it, the typed const may can't correctly decompile * Function/procedure type declaration - Support threadvar - Support resourcestring - Support class type...

    windowsmain directx device font virtual button dll array 0.3

    "windowsmain directx device font virtual button dll array 0.3"这个标题可能指的是一个针对这些技术的库文件或者更新版本,描述中的“destructor-free version”暗示这可能是一个优化过的C函数库,避免了析构函数...

    C++ 中virtual 虚函数用法深入了解

    三、虚析构函数(Virtual Destructor) 虚析构函数对于处理包含动态分配内存的对象尤其重要,因为它确保在删除派生类对象时正确地调用所有相关的析构函数。例如: ```cpp class Person { public: Person() { name ...

    Addison.Wesley.C++.by.Dissection.2002.pdf

    - **Virtual Functions: Dynamic Determination:** Describes virtual functions and dynamic dispatch. - **Abstract Base Classes:** Discusses abstract base classes. - **Templates and Inheritance:** ...

    陈广C#程序设计入门与实例视频教程11-19.rar

    11-constructor(2).swf 12-Destructor(1).swf 13-Destructor(2).swf 14-decstructor(3).swf 15-modifier.swf 16-Conversions(1).swf 17-Conversions(2).swf 18-Property(1).swf 19-Property(2).swf

    c++笔试面试宝典2011版.doc

    virtual ~Base() { cout &lt;&lt; "Base destructor" ; } }; class Derived : public Base { public: Derived() { cout ; } ~Derived() { cout &lt;&lt; "Derived destructor" ; } }; int main() { Derived d; ...

    20240312_ClassDemo_23-3.zip

    6. **多态(Polymorphism)**:C++通过虚函数(virtual functions)和纯虚函数(pure virtual functions)支持多态,允许不同类型的对象对同一消息做出不同的响应。 7. **模板(Templates)**:C++的泛型编程工具,允许编写...

    陈广c#视频教程1-2

    "12-Destructor(1)[1].swf"、"14-destructor(3)[1].swf"和"13-Destructor(2)[1].swf"可能详细解释了析构器的用途、何时被调用以及与垃圾回收机制的关系。在C#中,析构器主要用于清理非托管资源,如文件句柄或数据库...

    C模式设计:C中的实用设计模式

    用生成的目录设计模式C中的实用设计模式这将是在C中实现GoF (四人制)的设计模式。 (第1版)提供脚本以自动将设计模式生成为不同的代码样式:C,...+ +destructor virtual +methods virtual + + routine + + +

    c#视频教程1-2

    "析构函数"(12-Destructor(1)[1].swf、14-destructor(3)[1].swf、13-Destructor(2)[1].swf)是C#中用于清理对象不再使用时的资源的方法。不同于构造函数,析构函数在对象生命周期结束时自动调用,通常用于释放非...

    C++中的虚函数与多态

    在C++编程语言中,虚函数(Virtual Functions)和多态(Polymorphism)是面向对象编程的重要特性,它们使得程序具有高度的灵活性和可扩展性。本文将深入探讨这两个概念,结合示例代码进行详细解释。 首先,我们来...

    destructor name is not defined(解决方案).md

    destructor name is not defined(解决方案).md

Global site tag (gtag.js) - Google Analytics