c++ - 关于字符串变量按值传递的说明

标签 c++

当我们将一个类的对象作为值传递给复制构造函数调用时。它将处于连续循环中。但是它在字符串的情况下如何工作。

例如:

#include <iostream>
#include <string>

using namespace std;

string read_string(std::string s)
{
    std::string test;
    cout<<s;
    test=s;
    return test;
}

int main() 
{
    string sir = "start";
    cout << "SIR starts out as : '" << sir << "'" << endl;
    sir = read_string(sir);
    cout << "and becomes '" << sir << "', after return from function." << endl << endl;
    return 0;
}

这里 read_string(sir),我们向 sir 传递一个字符串对象,在函数定义中我们将其作为值处理。

请解惑

最佳答案

复制构造函数不会按值获取原始对象,否则会导致无限递归,如您所说。事实上,所有复制构造函数都通过引用获取原始对象。他们的签名是

T::T(const T&);

通过这种方式,复制构造函数可以访问作为常量引用的原始对象(而不是拷贝),因此它可以执行必要的“复制”操作。

关于c++ - 关于字符串变量按值传递的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947348/

相关文章:

c++ - OpenGL 纹理未按定义出现

c# - c#中的AddressOf和c++中的指针有什么区别

c++ - Windows 2000 的 GetProcessID 的替代方法

c++ - 是否可以创建 3d 数组的指针数组?

c++ - 为什么GPGME/GnuPG使用pinentry来输入密码?

c++ - C++ union 是如何知道其中存储的类型以及调用哪个析构函数的?

c++ - 获取 wav 文件的帧和样本

c++ - Make/gcc 神秘错误 2 : how to have more information?

c++ - C++ 中的程序判断一个数字是整数还是 float

c++ - C++11 对 Unicode 的支持程度如何?