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 ...
随机推荐
- idea的一些快捷键
查找文本的出现位置就用Ctrl+F/Ctrl+Shift+F在当前窗口或全工程中查找,再配合F3/Shift+F3前后移动到下一匹配处Intellij的Ctrl+N/Ctrl+Shift+N可以打开类 ...
- Permission 0644 for .ssh/id_rsa Are Too Open 解决办法
Permission 0644 for .ssh/id_rsa Are Too Open 解决办法 学习了:https://blog.csdn.net/muyimo/article/details/7 ...
- ckeditor 实现图片上传以及预览(亲测有效)
引用ckeditor <script type="text/javascript" src="static/ckeditor/ckeditor.js"&g ...
- leetCode 45.Jump Game II (跳跃游戏) 解题思路和方法
Jump Game II Given an array of non-negative integers, you are initially positioned at the first inde ...
- Unity协程(Coroutine)原理深入剖析再续
Unity协程(Coroutine)原理深入剖析再续 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面已经介绍过对协程(Coroutine ...
- taro 打包微信小程序运行失败(一)
1.报错信息 thirdScriptError sdk uncaught third Error Cannot read property 'createTextNode' of undefined ...
- MVC4 WebApi开发中如果想支持Session请做好如下几个方面的问题
1.在WebApiConfig中建立建立HttpControllerHandler和HttpControllerRouteHandler 并覆写它 public class SessionRouteH ...
- 从头认识多线程-1.9 迫使线程停止的方法-return法
这一章节我们来讨论一下还有一种停止线程的方法-return 1.在主线程上面return,是把全部在执行的线程都停掉 package com.ray.deepintothread.ch01.topic ...
- excel 永久保存宏命令
excel 永久保存宏命令 CreateTime--2018年5月31日10:03:44 Author:Marydon 情形一:下次编辑excel时,仍可使用 Ctrl+s-->选择否,选择 ...
- ubuntu——主题更新,Ubuntu-tweak安装
1.首先打开终端 2.在终端中输入sudo apt-add-repository ppa:tualatrix/ppa 回车后输入密码等一会,导入密钥 3.再输入sudo apt-get update ...