c++ - 如何从类里面返回 char*?

标签 c++ class

我想返回一个名字,虽然 main 应该能够改变它(在 main 的范围内),但它不应该在类中改变。

如果我这样做:

char* get_name(){
    char* name = new char[sizeof(_name)+1];
    strcpy(_name,name);
    return name;
}

我是否必须在某个时候delete[]?什么时候?

编辑:我不认为这是与 pointer to local variable 相同的问题因为这里的问题是如何在我使用它之后删除它。

最佳答案

好吧,这就是手动内存管理的问题。事实上,如果你想返回一个拷贝,那么调用者有责任释放内存,这是非常容易出错的。这就是为什么 C++ 有 std::string 类来处理内存;

std::string get_name() const //note the const on member function
{
    return _name; //this will work even if _name is char*, btw
}

关于c++ - 如何从类里面返回 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35572692/

相关文章:

c++ - 是否有可用于 OpenAL 的 Qt 包装器

c++ - 运行时错误,奇怪的行为

c++ - 填充 std::vector 时的不同地址

Javascript 从弹出输入单选类中获取值

c++ - 具有可变数量索引的 OpenGL glDrawElements

未创建 javafx Pane

Java:如何将用户定义的属性的值放入数组中?

PHP OOP 获取一个类的所有父类

c++ - 在 C++ 文件中声明全局类实例

c++ - 如何将 TBB task_arena 类与 enqueue 和 wait_until_empty 一起使用