访问说明符是 C++ 中控制类成员(属性和方法)可访问性的关键字。它们用于封装类数据并保护其免受意外修改或滥用。
public
:允许从类外部的任何地方访问成员。private
:仅允许在类内部访问成员。protected
:允许在类内部及其派生类中访问成员。class Person {
public:
string name; // 公共属性,可从外部访问
private:
int age; // 私有属性,仅在类内部可见
protected:
string address; // 受保护属性,可在类及其派生类中访问
};
解释:
Person
类中,name
属性是公共的,这意味着可以在类外部创建对象并直接访问该属性:Person p1;
p1.name = "Alice";
age
属性是私有的,只能在类内部的成员函数中访问:Person p2;
// p2.age = 30; // 错误:age 是私有的
address
属性是受保护的,可以在 Person
类及其派生类中访问:class Employee : public Person {
public:
void printAddress() {
cout << address << endl; // 可以访问受保护属性
}
};
封装是面向对象编程(OOP)的核心概念之一,它强调将数据隐藏在实现细节之后,只暴露必要的接口进行交互。在 C++ 中,封装可以通过访问说明符(public、private 和 protected)来实现,并结合使用 setter 和 getter 方法来控制对私有数据的访问。
private
以隐藏它们,或声明为 public
以允许外部访问。class Person {
private:
string name;
int age;
public:
// Getter 方法
string getName() {
return name;
}
// Setter 方法
void setName(string n) {
name = n;
}
// Getter 方法
int getAge() {
return age;
}
// Setter 方法
void setAge(int a) {
age = a;
}
};
int main() {
Person p1;
p1.setName("Alice");
p1.setAge(30);
cout << p1.getName() << " is " << p1.getAge() << " years old." << endl;
return 0;
}
解释:
Person
类包含两个私有属性:name
和 age
。getName()
, setName()
, getAge()
和 setAge()
。main()
函数中,我们创建了一个 Person
对象并使用 setter 方法设置其属性值。封装是 C++ 中面向对象编程的重要基石。通过有效地封装类数据,您可以提高代码的安全性、维护性和可重用性。
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
SemaphoreSlim 可对同时访问某一共享资源或资源池的线程数加以限制,相较于 Semaphore 更加轻量、快速,因此推荐使用,本文也着重介绍。