-
隐藏:子类B和父类A有一个同名的成员函数,当子类继承父类时,则会隐藏起父类同名的成员函数。
父子关系,成员同名,隐藏
查看全部 -
共有继承:class A:public B
保护继承:class A:protected B
私有继承:class A:private B
查看全部 -
基类成员访问属性 继承方式 派生类成员访问属性
private成员 无法访问
protect成员 public protected
public成员 public
查看全部 -
1111111
查看全部 -
查看全部
-
#ifndef PERSON_H //#ifndef意思是如果没有定义 #define PERSON_H …… #endif
宏定义解决重定义类的问题
查看全部 -
虚继承(virtual):为了解决继承了两次同一个父类从而有2个一样的数据成员,使其只有一个。
【菱形继承】B和C都继承A,而D继承了B和C
class Worker:virtual public Person{}; class Farmer:virtual public Person{}; class MigrantWorker:public Worker,public Farmer{};//农民工这个类中只含有一份Person
查看全部 -
多继承关系如图。
多继承就是 C继承于A,C又继承于B。 C有A和B 2个父类。 此处A与B的平行等级的。
查看全部 -
多重继承写法如截图。
多重继承就是 B从A继承,C又从B继承
查看全部 -
test1 以对象为参数,会实例化一个对象副本并在函数结束时自动销毁;
test2 以引用为参数,不会产生新的对象,只是产生一个引用,因此不会调用构造/析构函数;
test3 以指针为参数,使用时以&p为参数,结果与test2相同
查看全部 -
C++多态和重写:https://blog.csdn.net/weixin_42678507/article/details/89414998
析构函数重写问题
基类中的析构函数如果是虚函数,那么派生类的析构函数就重写了基类的析构函数。这里他们的函数名不相同,看起来违背了重写的规则,其实不然,这里可以理解为编译器对析构函数的名称做了特殊处理,编译后析构函数的名称统一处理成destructor,这也说明的基类的析构函数最好写成虚函数。
将析构函数定义为虚函数的原因:
因为基类指针可能指向派生类,当delete的时候,如果不定为虚函数,系统会直接调用基类的析构函数,这个时候派生类就有一部分没有被释放,就会造成可怕的内存泄漏问题。
若定义为虚函数构成多态,那么就会先调用派生类的析构函数然后派生类的析构函数会自动调用基类的析构函数,这个结果满足我们的本意。
所以!在继承的时候,尽量把基类的析构函数定义为虚函数,这样继承下去的派生类的析构函数也会被变成虚函数构成多态。
查看全部 -
子类可以给父类 赋值, 子类中多余的成员变量会被截断。
父类指针可以指向子类,但是也只能访问子类中被继承的部分。 子类指针无法指向父类。 子类是isa的关系,是父类的子集。
查看全部 -
子类中可以使用父类的函数(包括隐藏的)
查看全部 -
当父类和子类的成员变量或成员函数同名时,子类调用的是子类的成员变量或成员函数。若想调父类的成员变量或成员函数加作用域 ::
查看全部 -
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无法访问
查看全部
举报