c++ - 构造函数初始化列表和 const 变量

标签 c++ constructor initializer-list

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

为什么我们将变量定义为 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;
}

最佳答案

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

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

对于真实场景:

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

关于c++ - 构造函数初始化列表和 const 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167649/

相关文章:

c++ - OpenCV 和 GoPro - VideoCapture 流中的空帧

c++ - 在嵌入 C++ 的 x86 程序集中调用/返回

c++ - 两个工具按钮和 hboxlayout 之间的空间

c++ - 整数 vector 的 initializer_list 语法

c++ - 为什么存在 C++11 std::initializer_list 构造函数重载规则?

c++ - C++构造函数初始值设定项列表 “error: expected ' (' or ' {'”

c++ - ostream_iterator for vector<vector<double>>

c++ - 仅对 C++ 中的空私有(private)构造函数使用声明是否正确?

c# - 如何告诉继承类不要调用其基类的无参数构造函数?

c# - 使用 Array.Copy() 对数组内容进行自动类型转换