繁体   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