Cpp-Quiz

Google 搜到了 Knatten 大佬开发的 cppquiz 题库, 题库网址是 http://cppquiz.org。 很多问题都是依据比较新的 C++17 的标准出的, 短小精悍而且有详细的解析, 很有当时做 Rust Quiz 的感觉, 但这个题库的使用体验可好多了, 能很好考察梳理自己对 C++ 语法以及执行细节的掌握程度!

解析的依据是 Working Draft: Programming Languages — C++

Question List

不贴源代码, 只记录问题解析中的重点。

Question 14

basic.start.dynamic 做了相关的解释, 对于 non-localnon-inlinestatic storage 变量, 其初始化过程是 dynamic 的, 要么在 main() 之前, 或者推迟到进入 main() 函数之后但先于任何在 main() 函数中的构造函数。 而具备 static storage 属性的变量, 如全局变量, 声明为 static 的变量的析构发生在正常变量之后, 且 先构造的后释放(reverse order)

Question 16

成员函数的初始化在构造函数之前, 析构函数在任何成员函数析构之前。

Question 48

TODO

Question 126

basic.lookup.unqual 做了相关解释, 其本意表示 class 或 struct 中的静态成员变量会优先使用定义在该 class 或 struct 中的静态成员函数, 即便外部有同名的函数存在。

Question 312

class.access.baseclass.access.base 介绍了继承相关的内容。 class 和 struct 在多继承中的默认继承类型和 class 以及 struct 默认成员函数和成员变量类型是一致的, class 中默认的都是 private 而 struct 都默认 public