
在 C++ 语言中 , 类的成员 的 " 访问控制权限 " 是通过 " 访问修饰符 " 指定的 ;
C++ 语言 提供了 3 种 访问修饰符 :
在上面的 访问控制权限 中 , 涉及到了 类的内部 和 类的外部 两种范围 ;
被 private 修饰的 类 的 成员属性 和 成员方法 , 只能在 类内部 , 也就是 class 类的大括号 { } 范围内 被访问到 ;
一旦出了类 , 类中的 private 成员 和 protected 成员 便不能被访问到 ;
示例代码分析 :
// 定义类 : 通过 访问修饰符 测试 类的 访问控制权限
class MyClass {
public:
int publicVar; // 公开成员变量
protected:
int protectedVar; // 受保护成员变量
private:
int privateVar; // 私有成员变量
};如果变量没有指定 访问修饰符 , 那么 默认的访问控制权限 是 私有的 , 默认被 private 修饰 ;
// 定义类 : 通过 访问修饰符 测试 类的 访问控制权限
class MyClass {
int defaultVar; // 默认成员变量 - 私有成员变量
public:
int publicVar; // 公开成员变量
protected:
int protectedVar; // 受保护成员变量
private:
int privateVar; // 私有成员变量
};错误代码示例 :
// 包含 C++ 头文件
#include "iostream"
// 使用 std 标准命名空间
// 该命名空间中 , 定义了很多标准定义
using namespace std;
// 定义类 : 通过 访问修饰符 测试 类的 访问控制权限
class MyClass {
int defaultVar; // 默认成员变量 - 私有成员变量
public:
int publicVar; // 公开成员变量
protected:
int protectedVar; // 受保护成员变量
private:
int privateVar; // 私有成员变量
};
int main()
{
// 定义类对象
MyClass obj;
// 访问类的 公开成员变量
obj.publicVar = 10;
// 访问类的 私有成员变量
obj.privateVar = 10;
// 访问类的 受保护成员变量
obj.protectedVar = 10;
// 访问类的 默认类型成员变量
obj.defaultVar = 10;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}执行结果 :
已启动生成…
1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------
1>hello_world.cpp
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(30,5): error C2248: “MyClass::privateVar”: 无法访问 private 成员(在“MyClass”类中声明)
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(18): message : 参见“MyClass::privateVar”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(9): message : 参见“MyClass”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(33,5): error C2248: “MyClass::protectedVar”: 无法访问 protected 成员(在“MyClass”类中声明)
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(15): message : 参见“MyClass::protectedVar”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(9): message : 参见“MyClass”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(36,5): error C2248: “MyClass::defaultVar”: 无法访问 private 成员(在“MyClass”类中声明)
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(10): message : 参见“MyClass::defaultVar”的声明
1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\hello_world.cpp(9): message : 参见“MyClass”的声明
1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========