[英]C++ standard for defining public variable static const integer
我應該在c ++中,在定義該類的頭文件中還是在cpp文件中的哪里定義靜態const整數成員變量?
如果我將定義放在頭文件中,以及如果將定義移到cpp文件中,那么這兩種情況都符合,但這是c ++標准?
這是C ++標准關於常量靜態成員的完整報價:
如果非易失性const靜態數據成員是整數或枚舉類型,則其在類定義中的聲明可以指定大括號或相等初始化器,其中每個作為assignmentexpression的初始化器子句都是一個常量表達式(5.19)。 可以使用constexpr說明符在類定義中聲明文字類型的靜態數據成員; 如果是這樣,則其聲明應指定一個花括號或相等的初始化程序,其中每個作為賦值表達式的初始化程序子句都是一個常量表達式。 [注意:在這兩種情況下,成員都可能出現在常量表達式中。 — [end note] 如果在程序中使用了成員(3.2),則該成員仍應在名稱空間范圍中定義,並且該名稱空間范圍定義不應包含初始化程序 。
因此,如果不使用const靜態成員,則不需要在類外部進行定義。
注意:在這種情況下,const靜態成員是否公開並不重要。
您必須在類定義之外定義靜態成員,並在其中提供inittailizer。
對於標准方法,首先要做這樣的事情
在頭文件中聲明靜態變量
class Something
{
public:
static const int s_nValue;
};
在cpp文件頂部將其初始化為
const int Something::s_nValue = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.