对象/数组初始化啥时候需要常量表达式,书上内容与实际测试矛盾,请求大神解答

不是矛盾,而是编译器默认开了扩展 / 不报某些错误。遇到这种情况,请记得先打开编译器的警告再编译。比如打开 CL 的 /Wall 再编译题目中的代码,你就会看到这样的提示:warning C4204: nonstandard extension used: non-constant aggregate initializer比如打开 gcc / clang 的 -pedantic 再编译题目中的代码,你就会看到这样的提示:warning: initializer for aggregate is not a compile-time constant


    推荐阅读