Q
指針功能
0
A
回答
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++中是至關重要的,你要學會管理內存。否則,遲早你的應用程序將失敗。有一些編程模式對此有幫助,其中最受歡迎的編程模式是smart pointers。
0
的getFoo功能返回
1
(的類Foo)一個對象的指針有些人喜歡這個名字前右加星號。我個人比較喜歡這種語法:
Foo * getfoo() {
return foo_object;
}
我認爲這顯示了一點更加清楚地表明Foo *
只是類型的函數返回(就像它可能是int
)。
1
這意味着函數返回一個指針。 什麼type
那個指針是指針前面提到的。 這是指針將是類型Foo
。 Foo
這裏是你說的是class
和該函數返回一個類對象指針。
相關問題
- 1. 功能指針功能指針
- 2. 功能和指針指針
- 3. 功能指針
- 4. 功能指針
- 5. 指針功能
- 6. 功能指針
- 7. 功能指針
- 8. typedef功能指針
- 9. as3功能指針
- 10. glutDisplayFunc功能指針
- 11. 雙指針功能
- 12. 指針在功能名稱/指針功能
- 13. 功能VS函數指針
- 14. 功能指針調用
- 15. 指針使用功能
- 16. 字符串指針功能
- 17. C指針功能調用
- 18. JavaScript的指針功能
- 19. 指針的功能成員
- 20. 功能定義指針
- 21. 刪除指針從功能
- 22. 結構指針功能?
- 23. 功能基類的指針
- 24. 宏功能指針問題
- 25. 功能指針typedef在c
- 26. 通地址指針功能
- 27. 功能返回指針
- 28. 指針功能基於C
- 29. 在功能設置指針
- 30. 奇怪的指針功能
'Foo *'是返回類型。你最好認爲函數簽名是'(Foo *)getfoo'而不是'Foo(* getfoo)'。 – neuront 2013-03-01 07:22:30
@neuront:你不能在返回類型周圍放置圓括號,它會使聲明無效。 'Foo * foo()','Foo * foo()'和'Foo(* foo())'都是等價的(即使最後一個有點誤導)。 '(Foo *)foo()'是一個對'foo'的調用,並在返回類型上進行強制轉換。 – 2013-03-01 08:12:34
@CharlesBailey你是對的。這在語法中是不合法的,我寫的只是幫助理解函數的語法結構。 – neuront 2013-03-01 08:22:56