gpt4 book ai didi

c++ - 使用构造函数进行引用初始化

转载 作者:行者123 更新时间:2023-12-02 10:04:48 25 4
gpt4 key购买 nike

const T   a {}; // constant of type T
const T& b {}; // ???
T c {}; // variable of type T
T& d {}; // error
ab有什么区别? b是一个引用,但我没有为其分配对象:在该指令中,我通过T构造函数对其进行了初始化。 b的地址在a和c的地址之间,因此 ba似乎没有区别。

如果我可以声明和初始化 b,为什么 d给出编译错误?

我谈到了泛型T。我测试了上面的代码中的原始类型和类,结果是相同的。

最佳答案

在这些声明中

const T   a {}; // constant of type T
const T& b {};

将创建一个默认初始化的常量对象 a,以及一个默认初始化的临时对象的常量引用 b

编译器为此引用的声明发出错误
T&  d {}; // error

因为声明了对临时对象的非恒定引用。

您可以通过以下方式声明右值引用

T && d {};

这是一个示范节目
#include <iostream>

int main()
{
const int &ri {};

std::cout << "ri = " << ri << '\n';

int && rri {};

std::cout << "rri = " << rri << '\n';

return 0;
}

程序输出为
ri = 0
rri = 0

关于c++ - 使用构造函数进行引用初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60764943/

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