簡體   English   中英

使用結構名稱作為函數

[英]Using struct name as a function

我試圖了解以下行的作用:

BStats stats = BStats();

該結構定義如下:

struct BStats
{
    unsigned a;
    unsigned b;

    BStats& operator+=(const BStats& rhs)
    {
        this->a += rhs.a;
        this->b += rhs.b;
        return *this;
    }
};

但是我不知道這條線是做什么的。 它在調用默認構造函數嗎?

在5.2.3 / 2中的標准中描述了表達式BStats()

表達式T(),其中T是非數組完整對象類型或(可能是cv限定的)void類型的簡單類型說明符(7.1.5.2),將創建指定類型的右值,即value -初始化。

也就是說,該表達式將創建一個Bstats類型的右值 ,該值已初始化value 在您的特定情況下, 值初始化意味着BStats結構的兩個成員將被設置為零。

請注意,這與調用其他答案中提到的default-constructor的行為不同,因為默認構造函數將無法保證將成員設置為0。

就像任何類一樣,結構具有由編譯器自動創建的默認構造函數。 在您的情況下,BStats()僅調用默認構造函數,盡管顯式調用沒有用。

在C ++中,類和結構幾乎相同(不同之處在於C ++結構是具有public作為默認屬性的類,而類的屬性是私有的),就像調用構造函數一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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