C++虚函数解析(转载)
- #include <tchar.h>
- #include <iostream>
- using namespace std;
- #pragma pack (1)
- class Person
- {
- private:
- int m_nAge;
- };
- class Man : public Person
- {
- private:
- double m_dHeight;
- };
- int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
- {
- Person Jack;
- Man Mike;
- cout << sizeof(Jack) << endl;
- cout << sizeof(Mike) << endl;
- return 1;
- }
- #include <tchar.h>
- #include <iostream>
- using namespace std;
- #pragma pack (1)
- class Person
- {
- private:
- int m_nAge;
- };
- class Man : public Person
- {
- private:
- double m_dHeight;
- };
- class Woman : public Person
- {
- private:
- double m_dWigth;
- };
- int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
- {
- Person Jack;
- Man Mike;
- Woman Susan;
- cout << &Jack << endl;
- cout << &Mike << endl;
- cout << &Susan << endl;
- return 1;
- }

- Person Jack;
- Man Mike;
- Woman Susan;
开始正题:继承对象的构造和析构浅析:
- #include <tchar.h>
- #include <iostream>
- using namespace std;
- class Person
- {
- public:
- Person()
- {
- cout << _T("基类的构造函数被调用") << endl;
- }
- ~Person()
- {
- cout << _T("基类的析构函数被调用") << endl;
- }
- };
- class Man : public Person
- {
- public:
- Man()
- {
- cout << _T("派生类的构造函数被调用") << endl;
- }
- ~Man()
- {
- cout << _T("派生类的析构函数被调用") << endl;
- }
- };
- int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
- {
- Man Mike;
- return 1;
- }

- #include <tchar.h>
- #include <iostream>
- using namespace std;
- class Person
- {
- public:
- Person()
- {
- cout << _T("基类的构造函数被调用") << endl;
- }
- virtual void Height()
- {
- cout << _T("人类具有身高属性") << endl;
- }
- virtual ~Person()
- {
- cout << _T("基类的析构函数被调用") << endl;
- }
- };
- class Man : public Person
- {
- public:
- Man()
- {
- cout << _T("派生类的构造函数被调用") << endl;
- }
- virtual void Height()
- {
- cout << _T("男人具有身高属性") << endl;
- }
- virtual ~Man()
- {
- cout << _T("派生类的析构函数被调用") << endl;
- }
- private:
- double m_dHeight;
- double m_dWeight;
- };
- int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
- {
- Person* pPersonObj = new Man;
- delete pPersonObj;
- return 1;
- }

- #include <tchar.h>
- #include <iostream>
- using namespace std;
- class Person
- {
- public:
- Person()
- {
- cout << _T("基类的构造函数被调用") << endl;
- }
- virtual void Height()
- {
- cout << _T("人类具有身高属性") << endl;
- }
- ~Person()
- {
- cout << _T("基类的析构函数被调用") << endl;
- }
- };
- class Man : public Person
- {
- public:
- Man()
- {
- cout << _T("派生类的构造函数被调用") << endl;
- }
- virtual void Height()
- {
- cout << _T("男人具有身高属性") << endl;
- }
- virtual ~Man()
- {
- cout << _T("派生类的析构函数被调用") << endl;
- }
- private:
- double m_dHeight;
- double m_dWeight;
- };
- int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
- {
- Person* pPersonObj = new Man;
- delete pPersonObj;
- return 1;
- }

C++虚函数解析(转载)的更多相关文章
- 构造函数为什么不能是虚函数 ( 转载自C/C++程序员之家)
从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的.问题出来了,如果构造函数是虚的,就需要通过 vtable来调用, ...
- C++中的虚函数解析[The explanation for virtual function of CPlusPlus]
1.什么是虚函数? ...
- 【转】C++虚函数解析
本文转自陈皓大叔(左耳朵耗子)的博客www.coolshell.com. 文章是很久之前所写,去年还在写C++时有幸拜读,现在想起来还是相当有价值一转的,如果有一定C++基础(特别是读过<深度探 ...
- C++ 虚函数表解析(比较清楚,还可打印虚函数地址)
C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父 ...
- 【转载】 C++多继承中重写不同基类中相同原型的虚函数
本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...
- [转载]C++虚函数浅析
原文:http://glgjing.github.io/blog/2015/01/03/c-plus-plus-xu-han-shu-qian-xi/ 感谢:单刀土豆 C++虚函数浅析 JAN 3RD ...
- C++析构函数定义为虚函数(转载)
转载:http://blog.csdn.net/alane1986/article/details/6902233 析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数.如果析构函数不是虚函 ...
- (C/C++学习)5.C++中的虚继承-虚函数-多态解析
说明:在C++学习的过程中,虚继承-虚函数经常是初学者容易产生误解的两个概念,它们与C++中多态形成的关系,也是很多初学者经常产生困惑的地方,这篇文章将依次分别对三者进行解析,并讲述其之间的联系与不同 ...
- C++虚函数及虚函数表解析
一.背景知识(一些基本概念) 虚函数(Virtual Function):在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数.纯虚函数(Pure Virtual Functio ...
随机推荐
- springmvc+jsp引用本地图片文件
1.图片文件路径,注意图片文件夹和WEB-INFO文件夹同级 2.web.xml配置 <servlet-mapping> <servlet-name>default</s ...
- 设置pycharm为Eclipse快捷键
Ctrl + O 根据name模糊查找当前文件中类.方法Alt + (向左箭头或者向右箭头) ,回退or前进到到之前查看或者编辑处Alt + (向上箭头或者向下箭头) ,将当前方法整体往下或者往上移动 ...
- Android面试,View绘制流程以及invalidate()等相关方法分析
整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(measu ...
- 转:Mac OS X下Sublime Text (V2.0.1)破解
Mac OS X下Sublime Text (V2.0.1)破解 Mac OS X下Sublime Text (V2.0.1)破解 (2013-03-07 14:02:54) 转载▼ 正版的买 ...
- dede 怎样调用其它栏目的文章或者缩略图列表且有分页效果?
提问i:我做一个站点.有5个栏目,第5个栏目想把前4个栏目的文章都调用一下,搞一个汇总的文章集合. 发现用arclist调用不能设置pagesize的属性.从而不能给文章分页.然而list貌似不能调用 ...
- win8.1安装开发工具 vs2015 Visual Studio 2015 Preview Downloads
1.首先全新安装win8.1 略 破解激活.... 2.安装Visual Studio 2015 Visual Studio 2015 是免费的,不存在破解版本, 如果安装过程中存在问题,建议先把本文 ...
- C++ 11 - STL - 函数对象(Function Object) (上)
1. 定义 在STL中,可以把函数传递给算法,也可以把函数对象传递给算法. 那么,什么是函数对象呢? 我们来看下它的声明: class X { public: // define function c ...
- Android系统源码学习步骤
Android系统是基于Linux内核来开发的,在分析它在运行时库层的源代码时,我们会经常碰到诸如管道(pipe).套接字(socket)和虚拟文件系统(VFS)等知识. 此外,Android系统还在 ...
- 微信小程序 - 自定义components组件详解A篇
官网API:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html 自定义 ...
- javascript 闭包 通俗解释
代码段 function foo(){ var a = 2; function bar(){ console.log(a); } return bar; } var baz = foo(); baz( ...