【发布时间】:2013-04-23 11:02:07
【问题描述】:
可能这可能是一个非常基本的问题,但仍然想了解一些基本概念......
为什么我们将变量定义为 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;
}
【问题讨论】:
-
这只是为了保证你可以初始化你对象的所有变量,但初始化后你不会改变它们。如果无法初始化
const变量,它将毫无用处。此外,您不会为const变量赋值:您使用该值初始化变量。 -
初始化列表不会改变
const数据成员。他们初始化它们。这就是为什么您需要一个初始化列表并且您不能在实际的 ctor 主体中进行分配。const变量当然也需要初始化。否则你会得到一个未定义的初始值。
标签: c++ constructor initializer-list