C++类因为有继承的存在要比C时代的struct复杂得一些,特别是加上有虚函数的时候,以及多继承等这些特性更是令其内存布局变得面目全非。说实在的我也把握不了,我只是在一个实际的平台上进行了一些探索而已,并用此篇笔记将我的探索成果记录下来。
虽然说有些东西在C++标准里面没有规定如何做,不同的实现可能会有不同的作法,但是了解一个实际的系统是如何做的也会有益于我们更加深入的了解C++或者举一反...
分类:
编程语言 时间:
2016-06-16 15:04:51
阅读次数:
285
关于虚基类表指针/虚函数表指针这些类里面的“隐藏成员”在结构里面是如何进行字节对齐的这个问题困惑了我48个小时。虽然网上也有很多关于虚继承、虚函数表、虚基类等内存布局的一些文章,但是基本上谈的都是大致的布局,什么地方有什么,按照什么顺序来排放等这些泛泛而谈的东西,好像都没有把字节对齐方面考虑进去的文章,或许他们都没有考虑到一些复杂层次的类继承关系,从而字节对齐的问题也没有成为问题,也自然而然地会被...
分类:
编程语言 时间:
2016-06-16 15:01:57
阅读次数:
304
1. 单继承对象模型 (1)单一继承 【编程实验】继承对象模型初探 (2)Derived对象的内存布局 【实例分析】单一继承 (3)结论 ①vptr位于对象的最前端,非static的成员量根据其继承顺序和声明顺序排在其后。 ②子类继承基类所声明的虚函数,即基类的虚函数地址会被复制到派生类的虚函数表中 ...
分类:
编程语言 时间:
2016-06-15 23:51:26
阅读次数:
288
析构函数是为了在对象不被使用之后释放它的资源,虚函数是为了实现多态。那么把析构函数声明为vitual有什么作用呢?,下面通过例子来说明一下vitual的用途。 using namespace std;class Base{public: Base() {}; //Base的构造函数 ~Base() ...
分类:
其他好文 时间:
2016-06-15 19:11:59
阅读次数:
136
C++全称:C Plus Plus (.cpp) 在C基础上扩充了:类与对象、多继承、命名空间、运算符重载、虚函数、异常处理、模版、、、 程序执行效率高,很多语言的底层都是用C、C ++实现的 iostream :C++的输入输出库,类似于C的 stdio.h cin :istream类型的对象 ; ...
分类:
编程语言 时间:
2016-06-15 15:59:54
阅读次数:
140
CMakeLists.txt project(virtual) # 创建工程 virtual add_library(virtual SHARED virtual.cpp) # 创建动态连接库 libvirtual.dll add_executable(main main.cpp) # 创建运行程序... ...
分类:
编程语言 时间:
2016-06-15 15:36:06
阅读次数:
273
1.纯虚函数 virtal void function() = 0; 不能实例化, 因为此函数没有实体, 用于派生有实体的类 所以不能实例化含有纯虚函数的class 2.静态多态 3.模板(动态多态) 泛型编程 函数模板 template<typename T> T maximun(T n1, T ...
分类:
编程语言 时间:
2016-06-15 12:43:38
阅读次数:
246
先讲一下对QT动态链接库的调用方法,主要包括: 1、显式链接DLL,调用DLL的全局函数,采用Qt的QLibrary方法 2、显示链接DLL,调用DLL中类对象、成员函数。(通过对象即可实现类成员函数的调用) ①用虚函数表的方法,这也是COM使用的方法,利用Qt的QLibrary技术调用; ②用Ge ...
分类:
其他好文 时间:
2016-06-14 22:24:42
阅读次数:
495
原文:C/C++杂记:虚函数的实现的基本原理 1. 概述 简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例: 其中: B的虚函数表中存放着B::foo和B::bar两个函数指针。 D的虚函数表中存放的既有继承 ...
分类:
编程语言 时间:
2016-06-13 22:16:06
阅读次数:
233
原文:C/C++杂记:深入虚表结构 1. 虚表与“虚函数表” 在“C/C++杂记:虚函数的实现的基本原理”一文中曾提到“虚函数表”的概念,只是为了便于理解,事实是:虚函数表并不真的独立存在,它只是虚表(virtual table)中的一部分内容。例: 从图中可已看出,虚表除了包含虚函数指针,还包含其 ...
分类:
编程语言 时间:
2016-06-13 22:07:31
阅读次数:
187