特点
权限
是对类中的数据和方法的保护
类别
- public
- protected
- private
特赦(friend)
- 友元类
- 友元函数
修改(using)
权限修改并不是修改父类中的权限, 而是在子类中对父类更加严格的限制下,开放局部已有的权限。
#include <iostream>
class Base
{
public:
void say()
{
std::cout << "hello" << std::endl;
}
};
class Child: private Base
{
public:
using Base::say;
};
int main()
{
Child* ptr_child = new Child();
ptr_child->say();
return 0;
}
重定义
对已有的父类方法的重定义
#include <iostream>
class Base
{
public:
void say()
{
std::cout << "Base hello" << std::endl;
}
void say(std::string &name)
{
std::cout << "Base hello" << name << std::endl;
}
};
class Child: private Base
{
public:
void say()
{
std::cout << "Child hello" << std::endl;
}
};
int main()
{
Child* ptr_child = new Child();
//调用重定义后的方法
ptr_child->say();
//对say 方法进行重定义后,只能使用重定义的方法,其他say的重载方法都不能使用,
//除非转换成父类(向上转型)
Base* ptr_base = (Base*)ptr_child;
std::string name = "me";
ptr_base->say(name);
return 0;
}