我有一個攝像頭類,它設置了兩個變量 - 投影和視圖矩陣。我可以將這些外部參數包含在任何想訪問變量的頭文件中,或者我可以爲它們設置一個getter /將這些變量的引用傳遞給任何需要它們的東西。這僅僅是一種優先選擇的情況,還是以特定的方式進行實際的收益?使用extern和使用getter的區別?
0
A
回答
2
getter的優點是不會讓外部代碼寫入變量(例如指針數組無法遞增)。
否則,它在功能上是相同的,特別是如果它是供您自己使用的話。
+0
哦,好的,謝謝。我認爲即使某些東西是外部的,你仍然需要實際#包含它使用它的文件嗎? – SirYakalot
+1
是的,其他文件需要知道變量存在。您需要在頭文件中將變量聲明爲'extern',並將其作爲普通變量(不包括extern)來實現此變量。 – wormsparty
1
這是更多的封裝問題。如果您的相機類是這兩個矩陣的唯一持有者,那麼通過獲取者而不是公共屬性來提供它們是明智的。
例如,這將允許您對攝像機進行子類化併爲您的視圖和投影矩陣創建其他方法。
相關問題
- 1. 使用和extern有什麼區別?
- 2. 區別使用[和[
- 3. extern和volatile之間的區別
- 4. 的extern使用
- 5. Rust中的extern fn和extern「C」fn有什麼區別?
- 6. 使用getter和setter
- 7. 使用getter和setter
- 8. C中`extern int(x)[]`和`extern int x []`有什麼區別?
- 9. 如何在nuget中使用extern別名
- 10. 使用Object.defineProperty使用getter和setter
- 11. 使用通用的getter和setter用PHP
- 12. 何時使用getter和setter?
- 13. 使用lambda getter和setter
- 14. 使用C++的「extern C」和ctypes向量
- 15. 使用gradlew和gradle的區別
- 16. 使用IHttpHandler和webservice的區別
- 17. 使用java.util.logging和Log4j Logger的區別
- 18. 使用ID和onClick之間的區別
- 19. 使用<?時的區別和<?php
- 20. 使用Lex和Alexa的區別
- 21. 使用AsyncTask.get()和onPostExecute()之間的區別
- 22. 使用StringTokenizer和String.split()之間的區別?
- 23. 使用Trace和TraceSource之間的區別
- 24. 使用json和jsonP的區別
- 25. 使用@OneToMany和@ManyToMany之間的區別
- 26. 使用Janrain和OAuth的區別?
- 27. 使用`MySql.Data`和`MySql.Data.MySqlClient`之間的區別
- 28. 使用stripslashes()區別
- 29. 區別使用ROWNUM
- 30. 區別使用它
通過extern,你的意思是公開的,你真的寫過一個類來管理兩個全局變量嗎? –