[英]static local member of static global function?
如果我在靜態全局函數中有一個靜態局部變量(不是類靜態,全局靜態)...
foo.cpp:
static void f()
{
static T x;
...
}
x實例是否保證在應用程序中是單例的?
如果兩個翻譯單元都如上所述定義了static void f()
,該怎么辦。 他們每個人都有自己的x實例,還是要共享? 為什么?
static
函數具有內部鏈接 ,因此每個翻譯單元中的每個f
將是一個不同的獨立函數,並且每個翻譯單元會有一個x
的實例。
x實例是否保證在應用程序中是單例的?
保證在第一次調用f()
時創建。 它是一個static storage duration object
,這意味着它將與另一個static storage duration object
一起銷毀(按相反的順序創建)。
該變量x
僅在函數f()
內部可見。
如果兩個翻譯單元都如上所述定義了靜態void f(),該怎么辦。 他們每個人都有自己的x實例,還是要共享? 為什么?
由於這是靜態函數。 它在翻譯單元本地。 定義此功能的每個翻譯單元都將擁有該功能及其內部變量的副本。 它不會暴露在翻譯單元外部,因此只能在翻譯單元內部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.