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 ...
随机推荐
- .net平台推送ios消息
1,ios应用程序中允许向客户推送消息 2,需要有苹果的证书以及密码(怎么获取,网上搜一下,需要交费的) 3,iphone手机一部,安装了该ios应用程序 4,.net 项目中引用PushSharp. ...
- SQL Server Service Broker 简单例子 (转)
SQL Server Service Broker服务体系结构 消息类型 — 定义应用程序间交换的消息的名称.还可以选择是否验证消息.约定 — 指定给定会话中的消息方向和消息类型.队列 — 存储消息. ...
- 移动端的emoji表情符号插入MySQL数据库失败
插入数据时候报了错:### Error updating database. Cause: Java.sql.SQLException: Incorrect string value: ‘\xF0\x ...
- 解决Asp输出乱码问题
在一个Asp页面中页面正常的中文字符都没有问题,但如果用Asp程序输出的话就显示为乱码 终于在百度经验上找到解决方案: 1.将文件编码更改为Utf-8 2.在页头添加"<%@LANGU ...
- windows删除或修改本地Git保存的账号密码
windows删除或修改本地Git保存的账号密码 学习了:https://blog.csdn.net/xudailong_blog/article/details/78798118 (一)进入控制面板 ...
- 在weka中添加libSVM或者HMM等新算法
转:http://kasy-13.blog.163.com/blog/static/8214691420143226365887/ Weka的全名是怀卡托智能分析环境(Waikato Environm ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (七) 控制器的实现
控制器中的功能并不多,主要是以下这些 //对玩家分数的操作 CC_SYNTHESIZE_READONLY(SaveData *, m_saveData, SaveData); void update( ...
- cocos2d-x eclipse + NDK 自动编译配置
文章来自:http://www.cocos2dres.com/view.asp?id=90 1. 准备工作: android NDK r8版本 ADT Bundle 下载地址:http://de ...
- 解决Android 5.1系统以上通知状态栏小图标仅仅显示白色问题
看上图,想必大家都有遇到过吧.近期俺也遇到了,找到了解决方法,如今分享下也做个记录哈. 问题发生的规则是Android5.1或者以上的手机系统使用了非常多的颜色的通知图标,就会出现,怎么解决呢,非常e ...
- 机器学习数学基础- gradient descent算法(上)
为什么要了解点数学基础 学习大数据分布式计算时多少会涉及到机器学习的算法,所以理解一些机器学习基础,有助于理解大数据分布式计算系统(比如spark)的设计.机器学习中一个常见的就是gradient d ...