您的位置:首页 > 娱乐 > 八卦 > C++学习,类访问修饰符

C++学习,类访问修饰符

2024/12/23 13:12:45 来源:https://blog.csdn.net/xuann/article/details/141954755  浏览:    关键词:C++学习,类访问修饰符

C++数据封装是面向对象编程的一个重要特点,类成员的访问限制,通过在类主体内部对各个区域标记 public、private、protected 关键字区分。关键字 public、private、protected 称为访问修饰符。

类可以有多个 public、protected 或 private 标记区域。每个标记区域,在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是private。

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(8.0); 
   cout << "Length of line : " << line.getLength() <<endl;
 
   line.length = 18.0; 
   cout << "Length of line : " << line.length <<endl;
   return 0;
}

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

#include <iostream> 
using namespace std;
 
class Rect
{
   public:
      double length;
      void   setWidth( double wth );
      double getWidth( void );
 
   private:
      double width;
};
 

double Rect::getWidth(void)
{
    return width ;

void  Rect::setWidth( double wth )
{
    width = wth;
}
 
int main( )
{
   Rect rect;
 
   box.length = 8.0; 
   cout << "Length of rect : " << rect.length <<endl;

   box.setWidth(18.0); 
   cout << "Width of rect : " << rect.getWidth() <<endl;
 
   return 0;
}

protected保护成员,变量或函数与私有成员相似,但protected成员在派生类(即子类)中是可访问的,示例如下:

#include <iostream>
using namespace std;

class Line
{
   protected:
      double width;
};

class Line2:Line
{
   public:
      void   setWidth( double wth );
      double getWidth( void );
};

double Line2::getWidth(void)
{
    return width ;
}

void Line2::setWidth( double wth )
{
    width = wth;
}

int main( )
{
   Line2 line;

   line.setWidth(5.0);
   cout << "Width of line : "<< line.getWidth() << endl;

   return 0;
}
 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com