gpt4 book ai didi

c++ - 为什么我们不能在构造函数大括号 ({ }) 中初始化 Const 和引用变量,并且总是通过初始化列表完成

转载 作者:搜寻专家 更新时间:2023-10-30 23:50:16 24 4
gpt4 key购买 nike

为什么我们不能在构造函数大括号 ({ }) 内初始化 Const 和引用变量,而总是通过初始化列表完成

谢谢,桑迪普

最佳答案

引用的生命周期在它被初始化后开始(就像所有变量一样),一旦它被初始化,它就代表另一个变量的别名。考虑:

int& x;

/// ...

SomeClassConstructor(void)
{ // initialization list is done, reference lifetime has begun, and
// therefore is an alias. It already must alias a variable, then.

x = 5; // setting whatever x is an alias for to 5
}

你看,一旦我们进入构造函数,所有的成员变量都被初始化了。对于引用,这意味着它必须引用一个变量。因此,我们必须将其初始化以引用初始化列表中的内容。

同样,分配给 const 变量也是非法的:const int x = 5; x = 2;//不编译。它必须被初始化为一个值,并且它将在其生命周期内保持该值。因此,它也必须在初始化列表中进行初始化。

关于c++ - 为什么我们不能在构造函数大括号 ({ }) 中初始化 Const 和引用变量,并且总是通过初始化列表完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2445469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com