摘要: 例题1:#include #include #include using namespace std; class A { char k[3]; public: virtual void aa() { } }; class B : public virtual A { char j[3]; public: virtual void bb() { } }; class C : public virtual B { char i[3]; public: virtual void cc() { } }; int main() { cout (pc); A* pa = dynamic_cas... 阅读全文
posted @ 2014-04-02 21:23 周卓 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 单一的一般继承 可见以下几个方面:1. 虚函数表在最前面的位置2. 成员变量根据其继承和声明的顺序一次放在后面3. 在单一继承中, 被 overwrite 的虚函数在虚函数表中得到更新多重继承我们可以看到1. 每个父类都有自己的虚函数表2. 子类的成员函数被放在第一个父类的表中3. 内存布局中, 父类按照声明顺序一次排列4. 每个父类的虚表中的 f() 函数都被 overwrite 成了子类的 f(). 这样做就是为了解决不同父类类型的指针指向同一个子类实例.重复继承 我们可以看到, 最顶端的父类 B 其成员变量存在于 B1 和 B2 中, 并被 B 给继承下来了. 而在 D 中, 其有 B1 阅读全文
posted @ 2014-04-02 15:10 周卓 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 虚函数表class Base { public: virtual voif f() { cout f(); //Derive::f() b2->f(); //Derive::f() b3->f(); //Derive::f() b1->g(); //Base1::g() b2->g(); //Base2::g() b3->g(); //Base3::g()转自:http://blog.csdn.net/haoel/article/details/1948051 阅读全文
posted @ 2014-04-02 14:46 周卓 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 例题1: #include using namespace std;class A {protected: int m_data;public: A(int data = 0) { m_data = data; } int GetData() { return doGetData(); } virtual int doGetData() { return m_data; }};class B : public A {protected: int m_data;public: B(int data = 1) { m_data = data; } int doGetData() {... 阅读全文
posted @ 2014-04-02 11:42 周卓 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 类与结构: 唯一的区别是 class 中变量默认是 private 的, 而 struct 是 public 的 例题1:class A {const int size = 0;};这道程序题存在成员变量的初始化问题. 常量必须在构造函数的初始化列表里面初始化或者将其设置为 staticclass A {static const int size = 0;};class A ... 阅读全文
posted @ 2014-04-02 10:35 周卓 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1. 函数指针 void (*f)()2. 函数返回指针 void *f()3. const 指针. const int * or int const *. 即指针指向的值不能被修改, const 在 * 左边4. 指向 const 的指针. int * const, 指针本身不能被修改例题1:一个指向整型数组的指针定义为 A. int(*ptr) [] B. int *ptr[] C. in... 阅读全文
posted @ 2014-04-02 09:01 周卓 阅读(172) 评论(0) 推荐(0) 编辑