21xrx.com
2024-11-22 08:02:54 Friday
登录
文章检索 我的文章 写文章
类的访问修饰符 C++中的封装:讲解类的访问修饰符的作用
2023-07-10 08:42:47 深夜i     --     --
C++ 封装 访问修饰符 作用

封装是一种面向对象编程中的概念,而在C++编程语言中,类的访问修饰符则是封装的重要实现之一。类的访问修饰符包括public、protected和private,它们分别对应着不同的访问权限。

首先,public是最常用的访问修饰符,它允许类的外部代码访问该类的公共成员函数和数据成员。公共成员函数和数据成员在类的内部和外部都可以访问,这种访问方式通常用于定义类的接口,也就是类的使用者所能访问的部分。一个典型的示例是:


class Student

{

public:

  void setName(string name) m_name = name;

  string getName() const return m_name;

private:

  string m_name;

};

上述代码定义了一个学生类,其中setName和getName是公共成员函数,其目的是在类的内部和外部分别设置和获取学生姓名。由于这两个函数被声明为public,因此客户端代码可以通过调用这两个函数来访问该类的姓名数据成员。

其次,protected访问修饰符只允许类的成员函数和派生类的成员函数访问该类的受保护成员函数和数据成员。受保护成员函数和数据成员在类的内部和派生类中都可以访问,这种访问方式通常用于定义类的实现,也就是类的实现者所能访问的部分。一个典型的示例是:


class Shape

{

protected:

  double m_width;

  double m_height;

public:

  void setWidth(double width) m_width = width;

  void setHeight(double height) m_height = height;

  double getWidth() const return m_width;

  double getHeight() const return m_height;

};

class Rectangle : public Shape

{

public:

  double getArea() const { return m_width * m_height; }

};

上述代码定义了一个形状类和一个矩形类,其中Shape是基类,Rectangle是派生类。Shape类包含了两个受保护数据成员,而Rectangle类则继承了这两个数据成员,并在自己的公共成员函数中计算了面积。由于Shape类的受保护成员可以在派生类中访问,因此Rectangle类可以直接使用这两个数据成员进行计算。

最后,private访问修饰符是最严格的,它只允许类的成员函数访问该类的私有成员函数和数据成员。私有成员函数和数据成员在类的内部可以访问,但在类的外部和派生类中都无法访问。私有访问方式通常用于实现类的核心部分,也就是类的核心实现者所能访问的部分。一个典型的示例是:


class Counter

{

private:

  int m_count;

public:

  Counter() : m_count(0) { }

  void incr() { m_count++; }

  void decr() m_count--;

  int getCount() const return m_count;

};

上述代码定义了一个计数器类,其中m_count是私有数据成员,表示计数器的数值。类的构造函数和公共成员函数可以访问这个私有成员,可以进行计数器的递增和递减操作,并可以查询当前计数器的数值。

总体来说,类的访问修饰符是C++中封装的一种重要实现,通过它们我们可以控制类的成员函数和数据成员的访问权限,限定客户端代码所能访问的部分,并保护对象的私有实现。对于类的设计和程序的安全性都有重要影响。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复