有人可以解释这实际上代表什么吗?
Foo *getfoo()
{
return foo_object;
}
Foo
这是一堂课。我的问题是函数名之前的指针代表什么?
有些人喜欢在名称前添加星号。我个人更喜欢这种语法:
Foo * getfoo () {
return foo_object;
}
我认为这更清楚地表明这Foo *
只是函数返回的类型(就像它可能一样int
)。
这意味着该函数返回一个指针。以及type
该指针是指针之前提到的内容。那就是指针将是 type Foo
。Foo
正如您所说,这是 a class
,该函数返回一个类对象指针。
正如其他人所指出的,“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++ 中,学习管理内存至关重要。否则,您的应用程序迟早会失败。有一些编程模式对此有所帮助,其中最流行的是智能指针。
getfoo 函数返回一个对象指针(类 foo)