一段有意思的代码。关于类继承的
- 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实例的二倍