代码:
#include
using namespace std;
/*
class a{
float k; // 4字节
virtual void foo(){} //有一个4字节的指针指向自己的虚函数表
};
class b : virtual public a{
virtual void f(){}
}; 有这样的一个指针vptr_b_a,这个指针叫虚类指针,也是四个字节...
分类:
其他好文 时间:
2014-08-07 23:23:25
阅读次数:
465
#对象内存布局分类讨论vc6变量查看器中(Locals,Watch1等),也可以看到部分对象布局的情况(不完整,且虚继承是错误的)。vs2005及以后版本的编译器提供了/d1reportSingleClassLayout[类名]编译选项来查看对象完整的内存布局:cl classLayout.cpp ...
分类:
编程语言 时间:
2014-07-30 14:41:43
阅读次数:
314
多继承class Person{public: Person(std::string theName); void introduce(); protected: std::string name;};class Teacher : public Person{pub...
分类:
编程语言 时间:
2014-07-16 20:45:08
阅读次数:
177
不能被继承的类(模板参数友元) 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 用C++设计一个不能被继承的类.可以使用模板类模板参数友元, 模板类私有构造函数, 类虚继承这个模板类, 如果类被其他类继承时, 则虚继承会直接调用模板类, 无法构造.代码:/*
* main.cpp
*
* Created on: 2014.7.13...
分类:
编程语言 时间:
2014-07-16 13:19:29
阅读次数:
273
参考文章:http://blog.chinaunix.net/uid-25132162-id-1564955.htmlhttp://blog.csdn.net/haoel/article/details/1948051/一、虚函数与继承 1、空类,空类单继承,空类多继承的sizeof#include...
分类:
编程语言 时间:
2014-07-09 21:44:59
阅读次数:
329
仅供互相学习,请勿喷,有观点欢迎指出~class A{ virtual void aa(){};};class B : public virtual A{ char j[3]; //加入一个变量是为了看清楚class...
分类:
编程语言 时间:
2014-07-08 22:53:16
阅读次数:
498
C++面向对象中,虚函数与虚继承是两个完全不同的概念。一、虚函数
C++程序中只要类中含有虚拟函数,编译程序都会为此类生成一个对应的虚拟函数跳转表(vtbl),该虚拟函数跳转表是一个又若干个虚拟函数体入口地址组成的一个线性表。派生类的虚拟函数跳转表的前半部分由父类的vtbl得出,但是里面的内容...
分类:
编程语言 时间:
2014-06-07 20:28:48
阅读次数:
344
用于大型程序的工具--多重继承与虚继承[续2]七、特殊的初始化语义 从具有虚基类的类继承的类对初始化进行特殊处理:在虚基类中,由最低层派生类的构造函数初始化虚基类。在ZooAnimal示例中,使用常规规则将导致Bear 类和 Raccoon类都试图初始化Panda对象的ZooAnimal类部分。 虽然由最低层派生类初始化虚基类,但是任何直接或间接继承虚基类的类一般也必须为该基类提供自己的初始化式。...
分类:
编程语言 时间:
2014-06-01 16:18:16
阅读次数:
353
用于大型程序的工具--多重继承与虚继承引言: 大多数应用程序使用单个基类的公用继承,但是,在某些情况下,单继承是不够用的,因为可能无法为问题域建模,或者会对模型带来不必要的复杂性。 在这些情况下,多重继承可以更直接地为应用程序建模。多重继承是从多于一个直接基类派生类的能力,多重继承的派生类继承其所有父类的属性。一、多重继承1、定义多个类 为了支持多重继承,扩充派生列表:class Bear : p...
分类:
编程语言 时间:
2014-06-01 15:59:01
阅读次数:
393
用于大型程序的工具--多重继承与虚继承[续1]四、多重继承下的类作用域 成员函数中使用的名字和查找首先在函数本身进行,如果不能在本地找到名字,就继续在本类中查找,然后依次查找每个基类。在多重继承下,查找同时检察所有的基类继承子树 —— 在我们的例子中,并行查找 Endangered子树和Bear/ZooAnimal子树。如果在多个子树中找到该名字,则那个名字的使用必须显式指定使用哪个基类;否则,该...
分类:
编程语言 时间:
2014-06-01 14:44:35
阅读次数:
367