C++ 权限控制

首先,先来谈谈为什么会有权限控制这一东西?看如下代码

struct Test
{
    int a;
    int b;
};

int main()
{
    Test test;
    test.a = 2;
    test.b = 3;
    test.a = 4;
    system("pause");
}

这段代码是不是写起来特别爽,一直写一直爽。好了,此时假设对于这个Test结构体,你在你的项目中已经可能有上千处的地方直接用到了其成员a和b,然后有一天,你需要修改你的变量名,如下:

struct Test
{
    int m_a;
    int m_b;
};

你可能会想,我不可能会改着东西,这个你是站在你一人开发的角度上思考问题,可能平常很多时候都是多人协作开发的哦,也许这个结构体是他人提供的,这时候也只能随着改。

那么此时对变量进行引用的地方都得随之修改,你可能会想到直接查找替换,但是不管咋样,对于项目而已,只要是大面积的修改代码肯定是有风险在滴,所以一般来说对于这些公开的来说,不太会随意改动。

所以权限控制就来了,C++提供了两个关键字

public:
    这个成员哪里都可以用,不用担心被修改,所以,一旦发布成public的成员,是不能够随意改名字的
private:
    这个成员只用于内部使用,不要在其他的地方使用(编译器检测)

public/private可以修饰成员变量,也可以修饰成员函数

下面我们改进代码:

struct Test
{
private: //表示以下为私有权限
    int m_a;
    int m_b;
};

int main()
{
    Test test;
    //test.m_a = 2; // err 成员 "Test::m_a" (已声明 所在行数 : 41) 不可访问
    //test.m_b = 3;// err 成员 "Test::m_b" (已声明 所在行数 : 41) 不可访问
    system("pause");
}

此时在外部直接使用成员变量会直接报错,这里编译器帮我们限制了访问,那么此时疑问可能又来了,定义了结构体的成员变量为私有,那么我们既不能直接获取数据,也不能修改数据,有啥子用?

别急,我们不可以直接访问或者修改,那可以间接进行操作,可以给出两个对应的访问和修改的公有函数(接口)供他人修改,看如下代码:

struct Test
{
private:
    int m_a;
    int m_b;

public: //以下成员函数声明
    int getA(); 
    void setA(int a); 
    int getB();
    void setB(int b);
};

// 下面为成员函数的实现
// 函数名前面需要加作用域,用于区分普通全局函数

//获取变量m_a数据
int Test::getA
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值