![](/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.