C++面向对象
友元
友元可以访问类内所有成员1
2
3
4
5
6
7
8
9
10void func();
class A{
friend void func();
};
```
# 继承
派生类不能继承:析构函数,基类的友元函数,静态数据成员,静态成员函数
private:只能本类访问
protected:可以本类,派生类访问
public:可以本类,派生类,类外访问
class Animal;
class Cat;
class Cat:protected Animal{
};1
2
3
4
5
6
7
8
9c++的继承方式可分为公有继,保护继承和私有继承
c++默认继承方式位private继承
public继承
基类的访问权限在派生类中保持不变
private继承
基类的private成员在派生类中仍是private成员,但基类的protected和public成员在派生类中会变成private成员
protected继承
基类中的public成员在派生类中修改为protected成员,protected和private成员保持不变
## 阻止继承
class Cat final{
};1
2
3
4
5
6可以用final关键字阻止该类被继承
## 重载重定义
重载:要求函数具有不同的函数原型
重定义(重写or覆盖):指派生类可以定义与基类具有相同函数原型的成员函数
## 派生类修改基类成员的访问权限
如
class Animal{
protected:
void jump() {
cout << “跳” << endl;
}
};
class Cat:protected Animal{
public:
using Animal::jump;//修改jump权限为public
}
```
private成员永远只能被它内部的成员访问
因此不允许派生类使用using改变private成员的访问权限
注:由于继承导致的权限变化不算入其中