从 C++ 中的成员函数返回字符串

String return from member function in C++

本文关键字:函数 返回 字符串 成员 C++      更新时间:2023-10-16

我是一名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或动态分配的,因此指针的目标在执行离开函数后不会消失。