-
虚继承和普通继承最大的不同是虚继承相当于在子类中有一个指向父类的指针,而在菱形继承时,就会继承一个指针。因为普通继承每一个函数或变量都是xxx的,但是虚继承这个指针并不是子类的一部分,只是有一个。当二代子类在继承子类时,两个指针重合,就省去了很多空间。
class A {...}; class B1:virtual public A {...}; class B2:virtual public A {...}; class c:public B1,public B2 {...};
另外,记性不好,在这里记一下初始化列表
class A:public B { public: A(...):a(...),b(...),B(...){} private: int a,b; };
另外,菱形继承最后二代子类可以用虚继承。
B1,B2中都有A的指针,如果是C分别继承B1,B2的指针,这其中也包含A的指针。
查看全部 -
父子关系,成员同名,隐藏
查看全部 -
当父类与子类有同名变量或函数时,通过子类对象直接调用的是其自身的成员变量或函数;子类对象可以通过加父类名的方式访问父类变量及函数。例如soldier.Person::m_strName;
soldier.Person::attack();
查看全部 -
例题中的test1函数会产生一个临时对象,在函数调用完成以后即刻被销毁
查看全部 -
公有继承子类可访问父类的私有及保护成员及函数
查看全部 -
无论继承有多少级,只要保持间接或者直接的关系,子类都可与自己的直接父类,或者是间接父类,称之为is a 的关系,并且能够通过父类的指针对直接子类或者是间接子类的对象进行操作
查看全部 -
多重继承一家子,祖孙三代(人类>士兵>步兵)
多继承的父类是平行关系,写法多一个逗号(eg:农民 工人)
农民工
查看全部 -
传对象时函数会实例化一个临时对象,过程为:构造函数-函数-析构函数
传引用则不会实例化临时对象
传指针也不会产生新的临时变量
查看全部 -
子类对象 is A 父类对象
士兵 is A 人类
查看全部 -
基类成员访问属性——继承方式——派生类成员访问属性
查看全部 -
基类成员访问属性——继承方式——派生类成员访问属性
查看全部 -
基类成员访问属性——继承方式——派生类成员访问属性
查看全部 -
IS-A函数传参语法
查看全部 -
父类与子类的同名函数不能形成重载,只能形成隐藏,子类对象只能通过::使用父类函数
查看全部 -
调用父类成员函数语法
查看全部
举报