簡體   English   中英

靜態局部成員的靜態全局函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM