读书人

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

发布时间: 2012-08-02 11:35:25 作者: rapoo

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

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实例的二倍

读书人网 >C++

热点推荐