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 ...
随机推荐
- RTF文件合并 备忘
多个独立的rtf文件合并时,如果文件纸张方向存在横向 纵向不一致时,文件之间需要插入分节符 \pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspa ...
- 织梦(Dedecms)select_soft_post.php页面变量未初始漏洞
漏洞版本: Dedecms 5.5 漏洞描述: 漏洞产生文件位于include\dialog\select_soft_post.php,其变量$cfg_basedir没有正确初始化,导致可以饶过身份认 ...
- 测试markdown 博客功能
欢迎使用 Cmd - 在线 Markdown 编辑阅读器 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 -- 我们 ...
- linux CentOS6.5 yum安装mysql 5.6(转载&删改)
按:下面文章经过我一路测试没有问题,是篇好文,在此感谢作者 别踩我袈裟 .另因原文有些啰嗦,我自己有所删改,并尾后增加了一大段. 出处:https://www.cnblogs.com/renjido ...
- 截短字符串的函数(JS中适用)
function cutShort(str){ if(str.length>15){ str=str.substr(0,15)+"..."; } ...
- HDU 1710 Binary Tree Traversals(二叉树)
题目地址:HDU 1710 已知二叉树先序和中序求后序. #include <stdio.h> #include <string.h> int a[1001], cnt; ty ...
- Android 代码实现来电拦截
为了更好地理解这个Demo,我先向大家介绍一下需求与功能. 需求: 每天都会有很多无聊的电话,比如推销商品等,占用我们大量时间不说,有时候还会打乱我们的思路,扰乱我们的正常生活.所以实现一个对某些号码 ...
- SpringMVC日期类型转换问题处理方法归纳
前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后 台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然 ...
- Flutter混合工程改造实践
背景 6月下旬,我们首次尝试用Flutter开发AI拍app.开发的调研准备阶段没有参考业界实践,导致我们踩到一些填不上的坑.在这些坑中,最让我感到棘手的是Flutter和原生页面混合栈管理的问题. ...
- Unity for Windows: III–Publishing your unity game to Windows Phone Store
原地址:http://digitalerr0r.wordpress.com/2013/08/27/unity-for-windows-iiipublishing-to-windows-phone-st ...