public | protected | private | |
访问范围 | 类的内部√ 类的外部√ 派生类 √ | 类的内部√ 类的外部× 派生类 √ | 类的内部√ 类的外部× 派生类 × 不能被类的对象直接访问 |
继承表现 | 基类public成员 √ 基类protected成员 √ 基类private成员 × | 基类public成员 √ 基类protected成员 √ 基类private成员 × | 基类public成员 × 基类protected成员 × 基类private成员 × |
外部访问能力 | 任何外部代码(包括其他类和函数)可以直接访问公有成员 | 受保护成员不能被外部代码直接访问,但可以在派生类的成员函数中访问 | 除了友元函数和类内部的其他成员函数外,私有成员无法从类的外部直接访问 |
默认访问级别 | 类中没有明确指定访问权限的成员默认不是公有的 | 成员永远不会默认为受保护的,除非明确声明 | 如果类成员没有明确指定访问权限,则默认为私有 |
安全性 | 公有成员较易受到外部代码的影响,因此可能降低类的安全性和封装性 | 受保护成员在保证一定封装性的同时,允许继承体系中的类共享内部状态和行为,提供了一种中等程度的安全性 | 私有成员能够最大限度地保护类的内部状态不被外部破坏,提供良好的封装性和安全性 |
使用场景 | 当需要为类的用户(包括其他对象和方法)提供直接的访问和服务时,应使用公有成员 | 当设计一个类层次结构,并希望某些成员能被派生类访问但不能被外部访问时,应使用受保护成员 | 当成员仅为类内部使用,且不应被外部直接访问或修改时,应将其设置为私有 |
C++访问修饰符 public protected private 的区别有哪些?
最新推荐文章于 2024-08-20 16:47:30 发布