簡體   English   中英

定義公共變量靜態const整數的C ++標准

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

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