gpt4 book ai didi

c++ - 通过引用传递给构造函数

转载 作者:IT老高 更新时间:2023-10-28 12:55:56 26 4
gpt4 key购买 nike

我决定看看为成员分配引用是否会使成员成为引用。我写了下面的代码片段来测试它。有一个简单的类 Wrapper ,其中 std::string 作为成员变量。我在构造函数中取一个 const string& 并将其分配给公共(public)成员变量。后来在 main() 方法中我修改了成员变量,但是我传递给构造函数的 string 保持不变,这是怎么回事?我认为在Java中变量会改变,为什么不在这个代码片段中?在这种情况下,引用究竟是如何工作的?

#include <iostream>
#include <string>
using namespace std;

class Wrapper
{
public:
string str;

Wrapper(const string& newStr)
{
str = newStr;
}
};

int main (int argc, char * const argv[])
{
string str = "hello";
cout << str << endl;
Wrapper wrapper(str);
wrapper.str[0] = 'j'; // should change 'hello' to 'jello'
cout << str << endl;
}

最佳答案

要在构造函数中分配引用,您需要有一个引用成员

 class A{
std::string& str;
public:
A(std::string& str_)
: str(str_) {}
};

str 现在是对您传入的值的引用。同样适用于 const refs

 class A{
const std::string& str;
public:
A(const std::string& str_)
: str(str_) {}
};

但是不要忘记,一旦分配了引用,它就无法更改,因此如果分配需要更改 str,那么它必须是一个指针。

关于c++ - 通过引用传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507008/

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