1.介绍
若有相同的代码,继承能够节省空间,构造函数与析构函数调用时机一句话总结白发人送黑发人。
2.权限
- public
外部可以直接访问.
可以通过对象来访问这个成员
- private
外部不可以访问
自己的成员函数内, 可以访问
在父类内的所有成员函数内, 可以直接访问name
- protected
protected和private非常相似
和private的唯一区别是
protecte: 子类的成员函数中可以直接访问
private: 子类的成员函数中不可以访问
3.同名成员处理
若同名访问父类成员需加上父类作品域
#include<iostream>
using namespace std;
class Person {
public:
Person() {
age = 10;
weight = 10;
}
void func() {
cout << "Person成员函数";
}
void func(int a) {
cout << "Person传参成员函数";
}
public:
int age;
protected:
int weight;
};
class son :public Person {
public:
son() {
age = 20;
weight = 20;
}
void func() {
cout << "son成员函数";
}
int age;
int weight;
};
int main() {
Person p1;
son s1;
cout << s1.age << endl;
cout << s1.Person::age << endl;
s1.func();
cout << endl;
s1.Person::func();
cout << endl;
s1.func(12);/*即使知道传参能够确定是父类中的某个函数但仍然报错,
如果子类中有与父类同名的成员函数,子类的成员函数会将父类的同名成
员函数全部隐藏,包括所有重载版本的成员函数,若想访问,需加上作用域*/
s1.Person::func(12);
}