gpt4 book ai didi

c++ - 用整数值初始化非常量引用

转载 作者:太空狗 更新时间:2023-10-29 23:43:31 25 4
gpt4 key购买 nike

请考虑这段代码:

#include <iostream>

using namespace std;

class test
{
int& ref;
public:
test(int i):ref(i)
{
cout << "Constructor Called" << endl;
}
void p(){ cout<< ref << "\n";}
};

int main()
{
test obj(5);
obj.p();

return 0;
}

输出:

Constructor Called
5

疑问:此处如何使用整数值 (5) 初始化非常量引用 (ref),而以下代码失败:

int& r = 5;

最佳答案

测试的构造函数:

test(int i)

int 作为参数按值

当您通过将 5 传递给其构造函数来初始化 obj 对象时,即:

test obj(5);

该构造函数的参数 i 设置为 5(即:5 被复制到 i),然后成员引用 ref 在构造函数成员初始化列表中使用此参数初始化(而不是在构造函数调用时使用的文字 5):

test(int i):ref(i)

你有一个悬而未决的引用:引用ref比被引用的对象(i)还长,因为构造函数的参数i 在构造函数返回后不再存在。

关于c++ - 用整数值初始化非常量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691382/

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