首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一段好玩儿的代码。关于类继承的

2012-08-02 
一段有意思的代码。关于类继承的C/C++ code#include iostreamusing namespace stdclass Base{public:Bas

一段有意思的代码。关于类继承的

C/C++ code
#include <iostream>  using namespace std;  class Base  {  public:      Base():i(1){}      int get()     {        return i;    }  private:      int i;  };  class Derived : public Base  {  public:      Derived():j(2){}  private:      int j; };  int main()  {      Base b[5];      Derived d[5];      Base *p = d;      for(int i = 0; i < 5; i++)          cout << p[i].get() << endl;      return 0;  } 

输出:1
  2
  1
  2
  1

[解决办法]
没啥意思
你可以for(int i = 0; i < 10; i++),看看1212121212,就什么都明白了

没有虚函数表虚基类表的类对象,内存分布就是单纯的成员变量列表
指针访问连续空间元素就是纯粹按照该指针指向类型的大小做偏移
简而言之,在你这个例子里,一个Derived实例的内存空间长度是一个Base实例的二倍

热点排行