为什么析构函数要加visual?

一般来说,有使用visual的类,其析构函数都需要加上visual,这是为什么呢?

因为使用多态时,一般都是由基类指针来使用派生类的,在删除这个派生类对象时也一样,由基类指针来调用,

可以想象,如果析构函数不是虚函数,那么使用基类指针来删除对象,就相当于告诉编译器,我要析构基类(在没使用visual时,是静态绑定),

这样,就会导致派生类对象得不到释放。

时间: 2024-10-24 23:14:56

为什么析构函数要加visual?的相关文章

C++构造函数和析构函数等一些问题

虽然学过C语言,但是C++里面的一些基础还是不太懂,还需要再掌握.老范也开始要讲C++设计模式了,必须快点看了,不然就要白花窝滴钱了. 对于内存泄露,我的个人理解就是程序在运行过程中,自己开辟了空间,用完这块空间后却没有释放.今晚上我就犯了这样的低级错误,导致程序没有运行出来,还是先看代码: #include <iostream> /* run this program using the console pauser or add your own getch, system("p

c++ 虚析构函数[避免内存泄漏]

c++  虚析构函数: 虚析构函数(1)虚析构函数即:定义声明析构函数前加virtual 修饰, 如果将基类的析构函数声明为虚析构函数时,由该基类所派生的所有派生类的析构函数也都自动成为虚析构函数. (2)基类指针pbase 指向用new动态创建的派生类对象child时,用“delete pbase;”删除对象分两种情况:第一,如果基类中的析构函数为虚析构函数,则会先删除派生类对象,再删除基类对象第二,如果基类中的析构函数为非虚析构函数,则只会删除基类对象,不会删除派生类对象,这样便出现了内存泄

静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #include<iostream> void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void

c++面向对象的编程

一.概述: 面向对象编程基于三个基本概念:数据抽象.继承和 动态绑定: 在c++中,用类进行数据抽象: 用类派生从一个类继承另一个类:派生类继承基类的成员: 多态:动态绑定使编译器能够在 运行时  决定是使用基类中定义的函数还是派生类中定义的函数: 面向对象编程的关键思想是多态性(polymorphism):实现多态必须通过:1.继承  2.动态绑定 通过动态绑定(dynamic binding)能够编写程序使用继承层次中任意类型的对象,无须关心对象的具体类型.使用这些类的程序 无须区分函数是在

C#拾遗之结构和类

类和结构是.NET Framework中的同样类型系统的两种基本构造.两者在本质上都属于数据结构,封装这一组整体作为一个逻辑单位的数据和行为.数据和行为是该类或结构的"成员",它们包含着各自的方法,属性和事件等. 结构 结构是C#程序员用来定义自己的值类型的最普遍的机制.结构比枚举更强大,因为它提供方法,字段,操作符和访问控制等. 结构与类很相似,都表示可以包含数据成员和函数成员的数据结构.但是,与类不同,结构是一种值类型,并且不需要堆分配.结构类型的变量直接包含了该结构的数据,而类类

【ThinkingInC++】76、设计模式

第十章 设计模式 10.3 简化习语 10.3.1 信使 他将消息封装到一个对象中到处传递,而不是将消息的所有片段分开进行传递. MessengerDemo.cpp /** * 书本:[ThinkingInC++] MessengerDemo.cpp * 功能:将消息封装到一个对象中到处传递 * 时间:2014年10月29日17:54:53 * 作者:cutter_point */ #include <iostream> #include <string> using namesp

学好C++必须要注意的十八个问题

转自: 学好C++必须要注意的十八个问题 一.#include "filename.h"和#i nclude <filename.h>的区别 #include "filename.h"是指编译器将从当前工作目录上开始查找此文件 #include <filename.h>是指编译器将从标准库目录中开始查找此文件 二.头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实现方式 三.* , &修饰符的位置 对于*和&a

C++基础之三大特性之多态(顾客,别走啊,我这是羊肉,不是狗肉啊)

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">多态:多种形态</span> 举个例子,你有两个fun函数,第一个类中fun的功能是打印1,第二个类的fun的功能是打印2,你建一个类的对象,调fun,想打印1就能打印1,想打印2就能打印2,这就是多态,这就是多种形态,这也就是我们代码中需要达到的要求 多态的本质:灵活的复用

修炼一名程序员的职业水准(林庆忠__署名原创)

http://blog.csdn.net/baselive/article/details/306412 摘: 作者:林庆忠,1990年毕业于昆明工学院计算机软件专业,后又于1999年毕业在南京大学 完成软件工程专业硕士的学习,现供职于CNPC旗下的一个行业软件研发中心,因为在网上看了许多有经验的各路软件开发人员写的好帖,一时手痒兴起,也凑一篇壮壮声势. 假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志