0

有人可以解释这实际上代表什么吗?

Foo *getfoo()
{
    return foo_object;
}

Foo这是一堂课。我的问题是函数名之前的指针代表什么?

4

4 回答 4

1

有些人喜欢在名称前添加星号。我个人更喜欢这种语法:

Foo * getfoo () {
  return foo_object;
}

我认为这更清楚地表明这Foo *只是函数返回的类型(就像它可能一样int)。

于 2013-03-01T07:28:52.663 回答
1

这意味着该函数返回一个指针。以及type该指针是指针之前提到的内容。那就是指针将是 type FooFoo正如您所说,这是 a class该函数返回一个类对象指针

于 2013-03-01T07:29:17.597 回答
1

正如其他人所指出的,“Foo *”语法意味着函数正在返回指向内存中某个位置的指针,而不是对象本身。

它的含义是,如果你得到这个指针,这意味着 getfoo() 可以为它分配内存。因此,您可能必须自己释放它,否则将在程序运行的整个过程中分配此内存。这称为内存泄漏。

下面是一个释放内存的例子:

class Foo {};

Foo *getfoo() {
  Foo *f = new Foo();  // Memory allocated here
  return f;
}

int main () {
  Foo *g = getfoo();
  // some code here

  delete(g); // free the memory as "g" is no longer needed.

  return 0;
}

在 C++ 中,学习管理内存至关重要。否则,您的应用程序迟早会失败。有一些编程模式对此有所帮助,其中最流行的是智能指针

于 2013-03-01T07:38:15.500 回答
0

getfoo 函数返回一个对象指针(类 foo)

于 2013-03-01T07:21:41.887 回答