3
A
回答
8
不,使用C++編寫靜態變量的唯一規定是static
keyword。
例如,如果你改變Foo
到:
static void Foo()
{
int bar = 0;
bar++;
cout << bar << endl;
}
然後調用:
Foo();
Foo();
因爲bar
是不靜態輸出將是:
然而,如果你聲明bar
爲static
這樣的:
static void Foo()
{
static int bar = 0;
bar++;
cout << bar << endl;
}
輸出將在事實上是:
+0
您的打印報告絆了我一秒鐘。我想不出爲什麼酒吧等於十一:-) – Evorlor
+1
@Evorlor現在你說這是有點混亂。我編輯過在'endl'中添加。 –
5
沒有, au中分配靜態函數中的變量自動存儲默認情況下。
static
函數和static
變量代表碰巧重用C的語法相同的關鍵字正交的概念和C++
- 製作功能
static
告訴編譯器從其他的翻譯單元 定義的函數隱藏它
- 使變量
static
告訴編譯器將該變量的數據放置在靜態存儲器中。
使用static
作爲函數與靜態存儲區無關。
相關問題
- 1. 默認情況下枚舉的實例是靜態的嗎?
- 2. 靜態函數中的靜態變量?
- 3. 靜態函數和非靜態變量
- 4. 全局靜態變量vs函數中的靜態變量?
- 5. Java - 靜態初始化與靜態變量的默認值
- 6. 默認情況下,所有方法都是公開的嗎?
- 7. 靜態類中的靜態變量和非靜態類中的靜態變量
- 8. 在靜態情況下
- 9. specman有靜態變量嗎?
- 10. 函數範圍內的常量靜態變量情況下的內存分配
- 11. 靜態函數有不同的靜態類變量?
- 12. 做默認構造函數初始化的靜態變量?
- 13. 是POD靜態的默認析構函數嗎?
- 14. C++ 17中的模板默認內置了靜態變量嗎?
- 15. 接口變量是最終的,默認情況下是靜態的,方法是公共的和抽象的
- 16. 默認值爲靜態布爾變量
- 17. 爲什麼所有靜態方法/變量都在非靜態類中?
- 18. 靜態變量和函數
- 19. 是默認靜態內部類的成員靜態在java中
- 20. 實例中的PHP全局函數中是靜態變量嗎?
- 21. 任何人都可以解釋這個python靜態類變量的情況嗎?
- 22. 函數內的靜態變量vs C++中的靜態類變量
- 23. 內嵌函數中的靜態變量
- 24. 像C函數中的靜態變量
- 25. 靜態函數中的活動變量
- 26. 默認情況下使靜態數據線程安全是什麼意思?
- 27. 靜態和默認構造函數
- 28. 是WebOperationContext中的靜態函數嗎?
- 29. 使HttpSession變量是靜態的嗎?
- 30. Java枚舉變量是靜態的嗎?
否。當您使用關鍵字時,變量僅爲靜態。 – NathanOliver
一個靜態函數只是一個函數'local',所以它不能被其他對象引用。換句話說,如果這個函數是在foo.cc中定義的,bar.cc就不能調用這個函數。 –
這個問題證明,重新使用關鍵字'static'來隱藏函數是一個值得懷疑的想法。也許,引入一個關鍵字「隱藏」會是一個更好的方法。 – dasblinkenlight