C++ Mutable 关键字

17 Mar 2025 | 4 分钟阅读

Mutable 关键字在 C++ 中是非常有用的关键字。它用于更改或修改类数据成员,即使对象是 const 函数。举个例子,如果有一个包含五个非静态变量的类。所有这些变量都通过类构造函数赋值。在主函数中,您创建了一个对象并决定不更改该特定对象,因此您对该对象使用了 const。然而,过了一段时间,您只想更改其中两个特定变量。现在,您遇到了一个问题:如果您只想更改两个变量,您不能删除对象前面的 const。现在,mutable 关键字在这种情况下就会派上用场。假设您将类中的这两个非静态变量声明为 mutable。在这种情况下,您只能更改这些特定变量,而其他变量仍然是 const,不能更改。

示例

一个演示 mutable 关键字用法的简单程序:

输出

Mutable keywords in C++:

说明

在此示例中,这个简单程序包含一个 main 函数和一个名为 MyClass 的类。在 MyClass 中,有两个变量,名为 variable1variable2,它们都属于 int 数据类型,variable1 不是 mutable,而 variable2 是 mutable。这个类包含两个方法或函数,一个名为 setVariable2,另一个是简单的 display 方法setVariable2 方法接受一个参数并将其赋值给 variable2。另一个函数 display 方法用于显示 variable1 和 variable2。

现在,在 main 类中,创建了一个对象并使用 const 关键字使其成为常量。因此,对象中的变量不能被修改,但是第二个变量 variable2 可以通过使用 setVariable2 方法进行修改或更改,因为 variable2 是可变的。在这里,mutable 关键字用于在整个 const 对象中仅更改特定变量。

示例

现在,我们将把上述概念应用于日常生活

输出

Mutable keywords in C++:

说明

上述程序包含一个和一个主函数。在类中,有一个构造函数和其他方法,如存款取款显示方法。这些共同使该类实现银行功能。该类名为BankAccount。它包含四个变量:accountHolderName,字符串数据类型;accountNumber,整型数据类型;balance,双精度浮点型数据类型;和lastTransactionDate,字符串数据类型。这里,balancelastTransactionDate这两个变量是可变的。

存款方法接受一个参数,该参数是要添加到余额中的金额,并更新上次交易的时间。它使可变变量得以更改。取款方法也接受一个参数,该参数是要从余额中减去的金额,并再次更新上次交易的时间。如果银行中没有足够的金额,它会显示“资金不足”。之后,显示方法用于显示所有四个变量。

主函数中,通过传入四个参数:姓名、账号、初始余额,创建了一个名为 account 的对象。首先调用了第一个显示方法。现在,存入了一些金额,然后再次调用显示方法。之后,再次调用取款方法,并再次调用显示方法。在每次显示方法之后,我们可以看到余额上次交易日期的变化,它们是可变的,可以被修改。