C++访问控制

本文介绍了C++中的访问控制,重点讨论了private和public的区别。private成员只能被类内的函数和友元访问,而public成员允许类内外的函数和对象进行访问。通过一个程序示例,阐述了这两个访问权限在实际应用中的作用和限制,并展示了如何在类内部处理相同变量名的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C语言的结构体中,我们定义的结构体变量可以访问结构体里面的任意一个变量,但是在C++的类里面,我们可以设置他的访问权限,哪些可以更改,哪些不能更改,不能更改的变量可以通过哪些特殊途径去修改。这里我们先来认识一下C++的访问权限有哪几种。

private:
只能由 1. 该类中的函数、2. 其友元函数 访问。
不能被任何其他访问,该类的对象也不能访问。

protected:
可以被 1. 该类中的函数、2. 子类的函数、3. 其友元函数 访问。
但不能被该类的对象访问。

public:
可以被 1. 该类中的函数、2. 子类的函数、3. 其友元函数访问、4. 该类的对象 访问。

注:
友元函数包括3种:
设为友元的普通的非成员函数;
设为友元的其他类的成员函数;
设为友元类中的所有成员函数。


下面我们以一段程序来说明“private ”和 “public ”的区别,“protected”我们后面文章再介绍。

程序内容跟上一章一致,但是我们在类里面定义了哪些属于“private ”哪些属于 “public ”,它们的作用以及访问权限又有哪些,代码中还展示了当遇到类内部变量名一致的情况下如何区分开来,代码做了非常详细的注解来说明,如下:

#include <stdio.h>

class Person{

/* 私有成员 */
private:
/* 为什么要把它们设置为私有呢?是为了避免用户随意修改或设置错误的值,可以在public的方法中加以限制 */
    char *name;
    int age;
    char *work;

/* 公开成员 */  
public: 
    /* 这些公开的方法可以用于设置该类中的私有变量,提供一个修改窗口给用户,用户不能直接访问上面的私有成员 */
    /* 形参为了保证可读性我们一般会设置为name,但如何避免两个变量重叠冲突呢? */
    void setName(char *name)
    {
        /* 加上this可以表明是当前类里面参数  */
        this->name = name;
    }

    int setAge(int age)
    {
        /* 加以限制,避免出错设置,把年龄限制在0-150 */
        if(age<0 || age>150)
        {
            this->age = 0;
            return -1;
        }
        this->age = age;
        return 0;
    }

    void setWork(char *work)
    {
        /* 加上this可以表明是当前类里面参数  */
        this->work = work;
    }


    void printInfo(void)
    {
        printf("name = %s, age = %d, work = %s\n", name, age, work);
    }
};


int main(int argc, char **argv)
{   
    /* per称为Person这个类的对象 */
    Person per;

    /* 通过公开的函数来设置私有成员 */
    per.setName("Zhangsan");
    per.setAge(200);/* 形参为200则输入不在范围内,类里面加了限制会返回-1 */
    per.setWork("doctor");

    per.printInfo();

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值