构造函数初始值设定项列表和 const 变量

Uma*_*ack 3 c++ constructor initializer-list

可能这可能是一个非常基本的问题,但仍然想了解一些基本概念......

为什么我们将变量定义为 const ?- 在整个程序中保持该特定变量的值恒定。

但是,当我遇到构造函数的初始化列表时,它允许在对象构造期间为 const 变量赋值(例如,我尝试了下面的程序),我对 const 关键字本身的基本概念感到困惑。有人可以澄清这一点吗?

如果允许在对象构造期间更改 const 变量,那么以下程序中 const 变量的用途是什么?我们有针对这些行为的实时场景吗?如果是这样,您能给出一些场景吗?

#include<iostream>
using namespace std;

class Test {
    const int t;
public:
    Test(int t):t(t) {}  //Initializer list must be used
    int getT() { return t; }
};

int main() {
    Test t1(10);
    cout<<t1.getT();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Moh*_*hah 6

基本上,当数据成员被声明为常量时,它们必须在构造对象之前具有一些值,因此我们使用成员初始值设定项,以便在构造对象之前数据成员具有一些值。

在此程序中直到最后数据成员将具有相同的值

对于真实场景:

例如,您必须创建一个工资单程序,其中每个员工都有名字和姓氏,这样您就不希望函数意外地修改他们的名字,因此为了防止这种情况,您可以保持它们不变。