重载:
必须在同一个类别中,不能是父子之间,父子之间只能是隐藏或者重写
重写:
方法名参数列表都一样(实际要求返回值也一样),必须是virtual函数,则子类覆写父类导致父类函数无法通过子类调用
隐藏:只要子类函数名同父类就会隐藏父类方法,无论是否virtual,当然特殊情况则是在virtual时且参数列表也一样时,就变成了覆写,但仍然和覆写一样无法调用父类方法相应的方法。
子类赋值给父类:
#include <iostream>
using namespace std;
class A {
public :
int a=2;
int b=2;
};
class B : public A {
public :
int a=1;
int b=1;
void func() {
A::a = 100;//对继承部分的操控,通过域名的方式,也只能是在类中可以进行
A::b = 200;
}
};
int main(void) {
cout << sizeof(A) << endl;//8
cout << sizeof(B) << endl;//16
// 这两行代码说明了,,A 中的两个数据成员和B中两个数据成员是没有关系的
A a;
B b;
a = b;
cout << a.a << endl << a.b << endl;//2 2
b.func();
a = b;
cout << a.a << endl << a.b << endl;//100 200
/*
可以看出,子类对父类的赋值实际就是子类对象中继承自父类的部分赋值给父类对象!!
*/
// b.(A::a)a= 1000; // 通过域名的方式企图对子类中继承之父类的成员操作,在子类的外面是不行的!!必须在类中
return 0;
}