簡體   English   中英

成員變量與成員函數的初始化

[英]Initialization of Member variables vs Member functions

嘗試使用 c++11 標准編譯以下內容失敗並出現錯誤:

class test{
 public:
 int getId(){
   return id;
 }
 constexpr int id = 5;
};

non-static data member cannot be constexpr; .

我假設發生上述情況是因為類test在編譯時尚不存在。

但是,定義constexpr int id = 5; getId(){編譯得很好。 在編譯期間函數getId可用? 如果它的類還不存在,它如何可用?

示例 2:

class test{
 public:
 int getId(){
   constexpr int id = 5;
   return id;
 }
};

是的,該函數在編譯時可用。 您可以通過將其設置為constexpr函數來確認這一點,如下所示。 您可以改為聲明函數constexpr static ,因為它不需要訪問任何非靜態成員。

class test {
public:
    constexpr int getId() {
        constexpr int id = 5;
        return id;
    }
};

暫無
暫無

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

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