c++ - 常量成员初始化
问题描述
在我的“The C++ Programming Language”Bjarne Stroustrup 一书中,我读到了 const 成员 init 并看到了下一个代码(我更改了 var 名称和值):
class ConstMembers
{
public:
static const int a = 1; // ok
static int b = 2; // error: non const
const int c = 3; // error: no static
static const float d = 2.3; // error: not integer
};
但是当我使用下一个 cmake 设置在 Clion 2020.1 中运行此代码时
set(CMAKE_CXX_STANDARD 11)
在第三种情况下
const int c = 3; // error: no static
我没有收到错误。
这是书中的错误还是c ++ 11允许这样的初始化?
解决方案
是的,从 C++11 开始支持默认初始化列表。
(强调我的)
通过默认成员初始值设定项,它是包含在成员声明中的大括号或等号初始值设定项,并且在构造函数的成员初始值设定项列表中省略该成员时使用。
如果成员具有默认成员初始化程序并且还出现在构造函数的成员初始化列表中,则该构造函数的默认成员初始化程序将被忽略。
您也可以将其初始化为
class ConstMembers
{
public:
...
const int c {3};
...
};
推荐阅读
- android - Android 清洁架构和相关实体
- html - 如何设置 HTML / CSS 按钮的宽度
- java - SwingWorker 不更新长流程
- haskell - How to use Monadic binding operator on ADT or record syntax
- javascript - Use hta to change a second listbox based on the first select listbox
- powerbuilder - Write this Visual Basic code in Powerbuilder
- containers - 子容器中的 Aurelia ref 属性
- php - 如何在模型 cakephp2.10 中调用用户定义的自定义方法
- javascript - how to print a list from json document
- javascript - How can I modify the behavior of every function in an object?