浅谈C++ 类权限

特点

权限

是对类中的数据和方法的保护

类别

publicprotectedprivate

特赦(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; }