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