-
当发生菱形继承时,在实例化D的时候,会产生两份A的数据,形成数据冗余。为了解决。采用虚继承。即B和C在继承A的时候采用虚继承的方式。例如.class B :virtual public A{}; class C : virtual public B {}; 那么D在继承B和C的时候即可直接继承。 class D : public B, public C {};查看全部
-
多继承和多重继承 多重继承:线性继承两次及其以上为多重继承。例如: class Person:{}; class solider:public Person{}; class test:public solider{}; test 即为多重继承。 多继承:一次继承连个类成为多继承。例如: class test:public Person,public Solider{}; 此时test 为多继承。查看全部
-
函数参数的使用情况。 play(Person p) play(Person &p) play(Person *p) 第一个形参是一个临时生成的,在函数调用完之后会被销毁。第二三个操作的都是传入进来的实参本身。改变了函数外面实参的数值。(正如数据结构一般)查看全部
-
当用子类的对象去初始化父类时,在释放内存时可能会造成内存的泄露。执行了两次构造函数,但是只执行了一次析构函数。解决方法。在析构函数加上virtual。 形成虚析构函数。查看全部
-
可以用基类去初始化父类,但是不能反过来。查看全部
-
如果子类和父类重名,正常情况调用的是子类的数据成员和成员函数。如果想访问父类的,需要加上 Person::xxxx 来访问。查看全部
-
如果要调用父类中的play(),必须使用solider.Person::play()查看全部
-
父类与子类直接的同名函数无法形成重载,只能进行隐藏,查看全部
-
尖括号括起来的文件名是搜索程序的默认库,双引号括起来的文件名是搜索同目录下的文件,查看全部
-
父子关系,成员同名,隐藏查看全部
-
wom查看全部
-
访问属性查看全部
-
菱形继承,中间子类继承父类时用虚继承 virtual public person 可防止继承到复数份父类成员 虚继承初始化时,N个中间子类的初始化列表不会传递到父类,而是使用父类的初始化查看全部
-
当用父类对象a接收子类对象b,如 Person *a=new Soldier; delete a; a对象析构时只调用~Person(),不调用~Soldier(),可能造成内存泄漏, 解决方法是父类写上虚析构函数(不写也会默认加上去)查看全部
-
子类对象可以赋值给父类,父类不能赋值给子类查看全部
举报
0/150
提交
取消