在函数内定义的C ++对象的生命周期

时间:2017-02-14 05:09:03

标签: c++ object scope

我是一名Java程序员,我是C ++的新手,最近我一直在编写一些C ++代码。 我对C ++对象有点困惑'一生(在Java中有垃圾收集,我不必担心这个问题)。

这是我的问题。 假设我有一个函数f()

char *f() {

  string a = "Hello";

  return a.c_str();

}

这段代码有效吗?令我困惑的是:a内声明的字符串f的生命周期是什么,当f返回时是否会被垃圾收集?我可以依赖返回的a.c_str()f之外是否正确?

1 个答案:

答案 0 :(得分:-2)

C ++没有垃圾抓取器,就像java一样。如果你创建一个对象,那么你需要自己销毁它。函数中定义的所有变量在退出此函数时都会被销毁(对象除外,您需要自己销毁)