C++ 类成员的访问权限详解(4)

目录

类成员的访问权限

一、公有(public)权限

二、私有(private)权限

三、受保护(protected)权限

四、跳转链接


类成员的访问权限

概述:通过 publicprotectedprivate 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。

  1. 类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制

  2. 类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问 private、protected 属性的成员。

一、公有(public)权限

公有成员在程序中类的外部是可访问的。可以不使用任何成员函数来设置和获取公有变量的值。

 #include <iostream>
 using namespace std;
  
 class Line
 {
    public:
       double length;
       void setLength( double len );
       double getLength( void );
 };
  
 // 成员函数定义
 double Line::getLength(void)
 {
     return length ;
 }
  
 void Line::setLength( double len )
 {
     length = len;
 }
  
 // 程序的主函数
 int main( )
 {
    Line line;
  
    // 通过类成员函数设置长度
    line.setLength(6.0); 
    cout << "Length of line : " << line.getLength() <<endl;
  
    // 不使用成员函数设置长度
    line.length = 10.0; 
    cout << "Length of line : " << line.length <<endl;
    return 0;
 }

结果

 Length of line : 6
 Length of line : 10

通常将成员函数的声明放在类内,而函数的实现放在类外。称为类内声明类外实现,在实际开发中,通常把类的定义是放在头文件里,实现在源文件。


二、私有(private)权限

概述:私有成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。默认情况下,类的所有成员都是私有的。

 class Box
 {
    double width;
    public:
       double length;
       void setWidth( double wid );
       double getWidth( void );
 };

在上面的类中,width 是一个私有成员。

实际操作中,一般会在私有区域定义数据,在公有区域定义相关的函数,以便在类的外部也可以调用这些函数。

实例

 #include <iostream>
  
 using namespace std;
  
 class Box
 {
    public:
       double length;
       void setWidth( double wid );
       double getWidth( void );
  
    private:
       double width;
 };
  
 // 成员函数定义
 double Box::getWidth(void)
 {
     return width ;
 }
  
 void Box::setWidth( double wid )
 {
     width = wid;
 }
  
 // 程序的主函数
 int main( )
 {
    Box box;
  
    // 使用成员变量设置长度
    box.length = 10.0; // 因为 length 是公有的
    cout << "Length of box : " << box.length <<endl;
  
    // 不能使用成员变量设置宽度
    // box.width = 10.0; // 因为 width 是私有的
    box.setWidth(10.0);  // 使用成员函数设置宽度
    cout << "Width of box : " << box.getWidth() <<endl;
  
    return 0;
 }

结果

 Length of box : 10
 Width of box : 10

三、受保护(protected)权限

概述:受保护成员变量在函数外部是不可访问的,甚至是不可查看的,但受保护成员在派生类(即子类)(继承类中)中是可访问的。

实例

 #include <iostream>
 using namespace std;
  
 class Box
 {
    protected:
       double width;
 };
  
 class SmallBox:Box // SmallBox 是派生类 继承了Box
 {
    public:
       void setSmallWidth( double wid );
       double getSmallWidth( void );
 };
  
 // 子类的成员函数
 double SmallBox::getSmallWidth(void)
 {
     return width ;
 }
  
 void SmallBox::setSmallWidth( double wid )
 {
     width = wid;
 }
  
 // 程序的主函数
 int main( )
 {
    SmallBox box;
  
    // 使用成员函数设置宽度
    box.setSmallWidth(5.0);
    cout << "Width of box : "<< box.getSmallWidth() << endl;
  
    return 0;
 }

结果

 Width of box : 5

四、跳转链接

上一篇:C++类的定义和使用icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/134096223

下一篇:C++构造函数详解icon-default.png?t=N7T8https://blog.csdn.net/qq_61692089/article/details/134132620?spm=1001.2014.3001.5501

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值