摘要:
通过上一篇文章,我在分析继承过程中对象的数据结构时,意外发现可以通过地址随意的访问对象的数据,无论是私有的还是公开的。于是做了以下实验,通过实验可以看出来,内存中的数据,只要不是在常量区,只要你能获得目标的地址,你就可以修改它,无论是在const函数中,还是某类的私有成员变量。代码: 1 #include 2 3 /*** 4 * @author:zanzan101 5 */ 6 7 // 测试如何在const函数中修改成员变量 8 class A 9 {10 private:11 int data1;12 int data2;13 public:14 A(): ... 阅读全文
posted @ 2013-11-03 20:30
铁甲小宝
阅读(681)
评论(0)
推荐(0)
摘要:
多重继承:非虚函数,两个基类存在满足覆盖条件的函数时,派生类无法调用其中任何一个函数。该条件只有一个要求:重名。无论返回值、参数、const类型如何,只要重名,即满足覆盖条件。虚继承:伴随虚继承衍生出来了虚基类的概念,当一个B虚继承了A时,A就是B的虚基类,虚基类的概念只存在于虚继承关系两个类之间,当此时C正常继承A时,A相对于C就不是虚基类。无论虚继承还是虚基类,都与虚函数无关。使用虚继承时,两个中间类都必须是虚继承于最基类,否则无论虚函数还是非虚函数,都会产生两份函数。正常使用方法:两个中间类虚继承与最基类,之后最派生类正常继承于两个中间类;两个中间类必须保证不同时覆盖某个虚函数或同时覆盖 阅读全文
posted @ 2013-11-03 20:27
铁甲小宝
阅读(496)
评论(0)
推荐(0)
摘要:
虚函数:覆盖的条件:同名 && 同参 && 同返回值 && 同const类型重载的条件:同名 && (不同参 || 不同const类型)非法的条件:同名 && 同参 && 不同返回值类型非虚函数:覆盖的条件:同名重载的条件:不能重载基类的函数,一旦同名,就会覆盖基类的函数,但是可以平级重载注意:覆盖只能发生在继承过程中,不是继承不能覆盖,出现非法重定义的错误。代码: 1 #include 2 3 /*** 4 * @author:zanzan101 5 */ 6 7 class A 8 { 9 pu 阅读全文
posted @ 2013-11-03 15:43
铁甲小宝
阅读(239)
评论(0)
推荐(0)
浙公网安备 33010602011771号