簡體   English   中英

如何在C ++中聲明零初始化的類成員?

[英]How to declare a zero initialized class member in C++?

我的.hpp文件中包含以下類:

class user {
public:
    user(std::string username);

    static const user empty;
private:
    std::string username;
    std::uint32_t points;
    std::uint32_t level;
};

根據cppreference ,可以使用static T object;初始化為零static T object; 但是,如果這是在一個類中完成的,那是否意味着我上面聲明的empty用戶每次都被包括在內也會有所不同? 我希望empty用戶在所有文件中都相同。

我正在考慮將extern static const user empty; 但是我不確定如何在.cpp文件中實際定義它。

但是,如果這是在一個類中完成的,那是否意味着我上面聲明的空用戶每次都被包括在內也會有所不同?

如果“在一個類中”是指在類定義中 ,那么問題就不是“ 每次都不同 ”了,因為這違反了一個定義規則。 靜態成員始終只有一個實例,並且必須有一個定義。

我正在考慮將extern static const user empty;

沒有必要。 您可以繼續使用靜態成員。

但是我不確定如何在.cpp文件中實際定義它。

實際上,源文件確實是必須在其中定義變量的位置。 變量定義具有以下形式:

type_name variable_name(constructor_arguments);

因此,對於您的靜態成員:

const user user::empty("empty");

或者,如果您選擇使用全局變量:

const user empty("empty");

暫無
暫無

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

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