详解
描述了类成员的访问控制,即中成员所能使用的一个范围。
public、protected、private
- public:公共的,类内类外均可以使用。
- protected:保护的,在类内及其继承的子类中可以使用可以使用
- private:私有的,只能在类内可以使用,在类外及其子类中均不可以使用(类中默认访问修饰符)
public、protected、private区别
-
public
(公有权限):- 成员可以被类的内部和外部直接访问。
- 适合对外提供接口或功能。
-
protected
(保护权限):- 成员只能被类内部和子类访问,外部无法访问。
- 适合需要对子类开放但不希望直接暴露给外部的成员。
-
private
(私有权限):- 成员只能被类内部访问,子类和外部均无法访问。
- 适合存储不希望外部直接访问的敏感数据。
class CTest{
public:
int name; // 公有成员
protected:
int number; // 保护成员
private:
int age; // 私有成员
public:
void setAge(int nage) { // 通过公有函数访问私有成员
age= nage;
}
int getAge() {
return age;
}
};
拓展
public
(公有权限):
- 定义:成员可以被类的内部和外部直接访问。
- 用途:对外的接口,公有的方法和属性
class CTest{
public:
string name; // 公有属性
void play() { // 公有方法
cout <<name<< endl;
}
};
int main() {
CTest tst;
tst.name= "YAYA"; // 可以直接访问
tst.play(); // 可以直接调用
return 0;
}
protected
(保护权限):
- 定义:成员只能被类内部和子类访问,外部无法访问。
- 用途:在类内及其继承的子类中可以使用可以使用,对外隐藏
class CPeople{
protected:
int age;
};
class Cnum: public CPeople{
public:
void setNum(int age) {
anum = age; // 子类可以访问基类的保护成员
}
};
外部无法访问
Cnum num;
// num.age= 10; // 错误,外部无法访问保护成员
private
(私有权限):
- 定义:成员只能被类内部访问,子类和外部均无法访问。
- 用途:只能在类内可以使用,存储私有数据,通过公有方法提供访问接口
class priva{
private:
double height; // 私有属性
public:
void setprohei(double heigh) { // 通过公有方法操作私有属性
height = heigh;
}
double getprohei() {
return height ;
}
};
外部无法访问
priva pri;
// pri.height= 100.1; // 错误,私有成员无法直接访问
pri.setprohei(100.1); // 正确,通过公有方法访问