C++ 访问限定符
个人主页:Jason_from_China-CSDN博客
所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客
所属栏目:C++知识点的补充_Jason_from_China的博客-CSDN博客
概念概述
- C++一种实现封装的方式,用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。
- public修饰的成员在类外可以直接被访问;protected和private修饰的成员在类外不能直接被访问,protected和private是一样的,以后继承章节才能体现出他们的区别。
- 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止,如果没有后面没有访问限定符,作用域就到 }即类结束。
- class定义成员没有被访问限定符修饰时默认为private,struct默认为public。
- 一般成员变量都会被限制为private/protected,需要给别人使用的成员函数会放为public。
访问限定符的符号
在C++中,访问限定符用于控制类成员的访问权限。主要有三种访问限定符:
public
:公开的,可以被任何外部代码访问。protected
:受保护的,可以被类本身以及其派生类访问。private
:私有的,只能被类本身访问。
访问限定符的使用public(公有的):
默认情况下,如果不指定访问限定符,成员就是公开的。公开成员可以在类的任何对象上被访问,也可以在派生类中被访问(除非被隐藏)。
class MyClass { public:int publicVar; // 公开成员,可以被任何外部代码访问void publicFunc() { /* ... */ } // 公开成员函数 };
这里我们可以看见,类外面是可以访问私有变量的
访问限定符的使用private(私有变量):
私有成员只能被类本身访问。它们不能被外部代码访问,也不能被派生类访问。
class MyClass { private:int privateVar; // 私有成员,只能被类本身访问void privateFunc() { /* ... */ } public:void publicFunc() {privateVar = 20; // 正确,类本身可以访问私有成员privateFunc(); // 正确} };
在这里我们可以看到,如果放到私有变量里面,我们可以看到类比外面是无法访问类里面的私有变量的。
访问限定符的使用protected:
- 类内部访问:类本身可以访问其
protected
成员。- 派生类访问:从该类派生出的子类也可以访问基类的
protected
成员。- 外部访问限制:类外部的代码(即不是类本身也不是派生类)不能直接访问
protected
成员。//基类 class BaseClass { protected:int protectedVar; // 受保护成员,只能被类本身和派生类访问void protectedFunc() { /* ... */ } };// 这里是派生类,protected修饰的可以在派生类里面访问 class DerivedClass : public BaseClass { public:void accessProtectedMembers() {protectedVar = 10; // 正确,派生类可以访问基类的受保护成员protectedFunc(); // 正确} };
通过使用派生类,你可以创建更加灵活和可重用的代码,同时保持代码的组织性和清晰性。
需要注意的小点:
struct
struct MyStruct {//公有成员变量void Func(){cout << "struct 公有成员变量 " << endl;} public://公有成员变量private://私有变量};
class
class Date {//私有成员函数变量void Func(); public://公有//构造函数(全缺省构造函数)Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}private://私有成员函数变量int _year;int _month;int _day; };