从 C++ 中的成员函数返回字符串
String return from member function in C++
我是一名c程序员,刚刚开始使用c ++。在 c 中,如果我们从函数返回地址,则我们传递的地址将无效,直到并且除非我们动态分配了该内存。但是在C++这里我没有分配内存来存储字符串。字符串"a"的地址即使在从函数copy_string返回后也有效吗?为什么在主函数中它返回正确的字符串?
#include <iostream>
#include <string>
using namespace std;
class String_copy{
public:
string str1;
string str2;
string copy_string(string str);
};
string String_copy::copy_string(string str)
{
string a;
string b;
b="Hello World!";
a = str+" "+b;
return a;
}
int main(void)
{
String_copy str;
str.str1="Wooo";
str.str2 = str.copy_string(str.str1);
cout << "Final string is "" << str.str2 << """ << endl;
return 0;
}
在 C 和 C++ 中,与
C# 和 Java 相反,变量不需要在动态内存(包括字符串和字符数组)中分配。
如果需要或想要从函数返回指针,它们必须指向某个在执行离开函数后不会消失的变量。 两种流行的技术是使用static
变量或从动态内存分配的变量。 static
变量和动态分配的变量都将在执行离开函数后出现。
您可能会将std::string
与 C 样式的字符数组混淆。 std::string
类是一个对象,可以从整数或双精度等函数返回。
从技术上讲,C 样式字符串可以在不使用指针的情况下从函数返回。 很像返回整数数组。
C 语言中的常见做法是返回指向数组的指针,以避免复制大型数据结构。 因此,约定是返回指向 C-Style 字符串的指针,并且目标必须是static
或动态分配的,因此指针的目标在执行离开函数后不会消失。
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量