![](/img/trans.png)
[英]can member functions be used to initialize member variables in an initialization list?
[英]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.