特点
权限
是对类中的数据和方法的保护
类别
- public
- protected
- private
特赦(friend)
- 友元类
- 友元函数
修改(using)
权限修改并不是修改父类中的权限, 而是在子类中对父类更加严格的限制下,开放局部已有的权限。
#include 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 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; }