返回
C/C++隐藏知识--类方法与数据权限种类
后端
2023-10-28 20:10:14
C/C++中,类方法与数据可以拥有不同的权限,包括public、protected和private。这三种权限控制着访问权限,决定了哪些代码可以访问这些方法和数据。
public:public权限是最宽松的,它允许任何代码访问类中的方法和数据。这意味着,无论代码属于哪个类,它都可以调用类中的public方法和访问类中的public数据。
protected:protected权限比public权限严格,它只允许类本身及其派生类访问类中的方法和数据。这意味着,如果一个类派生自另一个类,那么派生类可以访问父类的protected方法和数据,但其他代码不能。
private:private权限是最严格的,它只允许类本身访问类中的方法和数据。这意味着,无论代码属于哪个类,它都不能访问类中的private方法和数据。
### 权限的用法
* public权限通常用于类中那些需要被其他代码访问的方法和数据。例如,一个类的构造函数通常是public的,因为其他代码需要通过构造函数来创建该类的对象。
* protected权限通常用于类中那些只允许类本身及其派生类访问的方法和数据。例如,一个类的实现细节通常是protected的,因为其他代码不需要了解这些细节。
* private权限通常用于类中那些只能由类本身访问的方法和数据。例如,一个类的内部状态通常是private的,因为其他代码不需要知道这些状态。
### 权限的总结
| 权限 | 访问权限 |
|---|---|
| public | 任何代码 |
| protected | 类本身及其派生类 |
| private | 类本身 |
### 实例
```c++
class MyClass {
public:
void publicMethod() {
// 代码
}
int publicData;
protected:
void protectedMethod() {
// 代码
}
int protectedData;
private:
void privateMethod() {
// 代码
}
int privateData;
};
class MyDerivedClass : public MyClass {
public:
void derivedMethod() {
protectedMethod(); // 可访问
protectedData; // 可访问
}
};
int main() {
MyClass object;
object.publicMethod(); // 可访问
object.publicData; // 可访问
//object.protectedMethod(); // 不可访问
//object.protectedData; // 不可访问
//object.privateMethod(); // 不可访问
//object.privateData; // 不可访问
MyDerivedClass derivedObject;
derivedObject.publicMethod(); // 可访问
derivedObject.publicData; // 可访问
derivedObject.protectedMethod(); // 可访问
derivedObject.protectedData; // 可访问
//derivedObject.privateMethod(); // 不可访问
//derivedObject.privateData; // 不可访问
return 0;
}
在这个示例中,MyClass
类定义了一个publicMethod
方法、一个publicData
数据成员,一个protectedMethod
方法、一个protectedData
数据成员,以及一个privateMethod
方法和一个privateData
数据成员。MyDerivedClass
类派生自MyClass
类。
在main
函数中,我们创建了一个MyClass
对象和一个MyDerivedClass
对象。然后,我们调用这些对象的各种方法和访问这些对象的数据成员。
如您所见,public
方法和数据成员可以被任何代码访问,protected
方法和数据成员只能被类本身及其派生类访问,private
方法和数据成员只能被类本身访问。
理解C/C++中的权限控制机制非常重要,它可以帮助您编写更安全、更可靠的代码。