可能这可能是一个非常基本的问题,但仍然想要了解一些基本概念......
为什么我们将变量定义为const? - 在整个程序中保持特定变量的值不变。
但是,当我遇到构造函数的初始化列表时,它允许在对象构造期间为const变量赋值(我尝试下面的程序为ex。),我对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;
}
答案 0 :(得分:2)
基本上,当数据成员被声明为常量时,它们必须在构造对象之前具有一些值因此我们使用成员初始化程序,以便在构造对象之前,数据成员具有一些值。
在此程序中直到数据成员具有相同的值
真实场景:
例如,您必须制作一个工资单程序,其中每个员工都有一个名字和姓氏,因此您不希望功能意外地修改其名称,因此为了防止这种情况,您可以保持它们不变。
答案 1 :(得分:1)
为什么我们将变量定义为const?
变量声明 const
,表示不会更改。
但是,当我遇到构造函数的初始化列表时,它允许在对象构造期间为const变量赋值(我在下面尝试了以下程序),我对const关键字的基本概念感到困惑本身。谁有人澄清这个?
不是赋值而是构造,如果它不是简单类型而是MyClass,那么将使用MyClass
的构造函数,而不是operator=
答案 2 :(得分:0)
在对象构造期间它不会改变,因为它没有(已定义)值
当您在类中提供const
- 成员时,这是对象标识的一部分,并且此特定值将在对象的生命周期内保持不变。
声明成员const
时,您承诺编译器不会尝试更改此成员的值。
来自MSDN
const
关键字指定变量的值是常量,并告诉编译器阻止程序员修改它。
// constant_values1.cpp
int main() {
const int i = 5;
i = 10; // C3892
i++; // C2105
}