澄清字符串变量作为通过值通过
clarification regarding string variable pass as pass by value
当我们将类的对象传递给copy构造函数时,调用了copy构造函数。它将连续循环。但是它在字符串的情况下如何工作。
例如:
#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)
,我们正在传递一个字符串对象,在函数定义中,我们正在处理为值。
请清除疑问。
复制构造函数不会按值按原始对象,否则会导致无限的递归。实际上,所有复制构造函数通过参考将原始对象采用。他们的签名是
T::T(const T&);
以这种方式,复制构造函数可以访问原始对象(而不是副本(作为const引用,因此它可以执行必要的"复制"操作。
通过Value 和通过参考通过:
-
通过参考通过原始数据(同一内存(,该数据传递给函数,
-
按值复制将数据传递到函数范围的其他(新的和临时的(内存位置(即在该功能中创建和破坏(。
。
此规则适用于基本类型(例如int
,float
,double
(以及自定义类型(例如class objects
,std::string
等(
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 从字符串变量中逐字符读取单词
- 对函数 PlaySound 使用字符串变量
- C++中的字符串变量
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 我可以用字符串变量而不是它的名字创建容器吗? C++
- 字符串变量的大小
- 为什么我的字符串变量没有打印完整的字符串?
- 字符串变量未更新 c++
- 如何使用 setfill 和 setw 在字符串变量中存储十六进制值
- 在.cpp文件之间传递全局字符串变量?
- 字符串变量顺序
- 为什么可以将整数分配给字符串变量?
- 在qt创建器中调试时如何访问字符串变量的完整值?
- 将字符串变量分配给无符号字符变量
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 我有一个字符串变量单词= "APA"
- 将字符串变量从 bash 脚本传递到根宏