迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

C++ 中的 Getter 和 Setter

作者:迹忆客 最近更新:2023/03/23 浏览次数:

这个小指南将首先简要介绍面向对象编程中的封装和数据隐藏的概念。然后将继续使用 C++ 中的 getter 和 setter。

什么是封装

封装是将所有相关事物绑定在一起的概念。C++ 中的一个类可以将所有相关数据组合到一个胶囊中。

例如,假设我们有一个带有一些属性和属性的对象或实体 Rectangle。我们可以将它的所有属性和属性组合在一个类中。

因此,众所周知,封装将相关数据和方法组合在一个类中。它经常与数据隐藏的概念相混淆。

数据隐藏是一个概念,属于一个类的属性不应该被类外的每个人访问。这是因为它违反了数据安全性。

如果将一个类的数据成员设为私有,则该类外的任何用户都无法访问它,因此我们可以实现数据安全。

通过这样做,虽然我们无法从类外部设置或获取数据成员的值,但我们可以创建可用于访问成员的方法,这些方法可以确保一些不需要的数据不会放在数据成员中.

这种设置或获取数据成员值的方法称为 gettersetter

C++ 中的 Getter 和 Setter

这是一个很好的编程实践,可以将类的数据成员设为私有,这样就不能将无效数据分配给类的数据成员。有了这个,你可以在将数据存储在数据成员中之前检查数据成员中的数据。

例如,我们有一个类 Shape。任何形状的长度属性都不能为负数。

因此,在设置长度的值时,我们会检查提供的值是否大于零。

同样,如果我们有一个 Employee 类,它的属性是 salary。该属性既没有负值也没有很大的正值。

因此,必须在设置 salary 的值之前放置一个验证器。让我们看看下面的例子。

class Emp{
    private:
        int empSalary;
    public:
        void setEmpSalary(int sal)
        {
            if (sal > 0 and sal < 10000000)
                empSalary = sal;
        }
        int getEmpSalary()
        {
            return empSalary;
        }
};

在这个代码片段中,我们有数据成员 salary,它是私有的,用于实现数据隐藏。此外,我们为此数据成员提供了一个 getter 和 setter,以便在需要时可以设置和检索值。

在 setter 函数中,我们还创建了一个检查来控制在 salary 数据成员中输入的无效值。这是为你需要的任何数据成员创建 setter 和 getter 的方法。

让我们看一下上面示例的完整代码。

#include<iostream>
#include<string>
using namespace std;
class Emp{
    private:
        int empSalary;
        string empName;
    public:
        Emp(string n, int s){
            setEmpName(n);
            setEmpSalary(s);
        }
        void setEmpName(string s){
            empName = s;
        }
        string getEmpName(){
            return empName;
        }
        void setEmpSalary(int sal){
            if (sal > 0 and sal < 10000000)
                empSalary = sal;
        }
        int getEmpSalary(){
            return empSalary;
        }
};
int main(){
    Emp e ("John", 50000);
    cout<<"Name: "<<e.getEmpName()<<endl;
    cout<<"Salary: "<<e.getEmpSalary()<<endl;
}

输出:

Name: John
Salary: 50000

结论

向类接口添加 getter 和 setter 方法至关重要。因为类的成员变量将被声明为私有的,所以你的类的用户将需要一种方法来检索和设置他们的值。

因为 setter 方法可以包含数据验证代码以确保将成员变量设置为合法值,所以 getter 和 setter 函数可以安全地启用此访问。

当然,有时你不想为类的所有成员变量提供 getter、setter 或这两种方法。只读成员变量是可以获取但不能更改的变量。

一个这样的例子可以是一些静态数据成员,也可以是一些只读数据成员;对于这样的成员,我们需要一个 getter 函数,而不是一个 setter 函数。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:181 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:214 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:127 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便