-
soldier.Person::play();
Person::code = "123123"
查看全部 -
B public继承 A:
A public --> B public
A protected --> B protected
A private --> B 不可访问
B protected继承 A:
A public,protected --> B protected
A private --> B无法访问
B private继承A:
A public,protected -->B private
A private --> B无法访问
查看全部 -
当父类和子类有相同的成员函数或者是数据成员,子类继承父类,所以子类也应该有父类的成员函数和数据成员,这时候实例化B类的对象就没法直接访问到A当中与B相同的成员函数和数据成员,这种现象叫做隐藏,
(父子关系,成员同名,隐藏)
查看全部 -
如果函数调用test(Person P):用的是一个临时变量的时候,在执行函数的时候会函数开始的时候调用依次构造函数,最后再调用析构函数,而test(Person &p)和test(Person *p)不会产生构造函数和析构函数,不会浪费时间
查看全部 -
Person *p=new Soldier;//用Person的指针指向堆中 soldier的对象
p->play();
delete p;
p=NULL;
发现这个时候析构函数调用的时候只调用了父类的析构函数,并没有调用子类的析构函数,所以这会产生内存的泄露,如果想释放这段内存,要在父类和子类的析构函数前面都加上virtual,使他们成为虚的析构函数,这样就可以了,使用条件是(如果用父类的指针指向堆中子类的一段内存,最后并且想用父类的对象来释放这两端内存,这是就需要用到虚析构函数)
查看全部 -
用父类的指针或者说是对象,只能调用父类里面的成员函数和数据成员,无法去访问子类的数据成员和成员函数。
查看全部 -
(1)Soldier soldier; Person p; p=soldier; (2)Soldier soldier; Person p=soldier;
无论以上是给父类的对象直接赋值或者用子类去初始化,父类里面的和子类相同的成员函数,都会被子类里面的数据所覆盖掉。
查看全部 -
包含但可以不被访问
查看全部 -
$dPORYbMLCF6$查看全部
-
。。。。。
查看全部 -
关于public继承
查看全部 -
使用了虚继承(中间层应写为Worker:virtual public Person)则最顶层基类不接受参数传递而使用默认参数
查看全部 -
公有成员可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
保护成员不可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
私有成员不可以直接访问,可以间接通过自身类的公有函数访问,不可以通过子类的公有函数访问
private不能继承、类外不能访问,protected能继承,类外不能访问,public能继承、类外能访问。总结:权限:类外访问 < 继承 < 类内访问。
查看全部 -
公有构造函数:调用子类父类也随之调用查看全部
-
访问父类被覆盖的成员函数时
查看全部
举报