测验概述
已完成 0/10 个问题
问题:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
信息
Java 测试
您已完成过测验,因此您不能再测验。
测验载入中...
您必须登入或注册才能开始测验。
您必须先完成以下测验才能开始:
测验结果
答对 0/10 个问题
答题时间:
时间已花费
类别
- 未分类 0%
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 已答
- 回顾
-
1/10问题
1. 问题
关于std::variant的正确使用方式是
正确
std::variant是类型安全的联合体,可存储指定类型集合中的任一类型。
错误
std::variant是类型安全的联合体,可存储指定类型集合中的任一类型。
-
2/10问题
2. 问题
以下代码的输出是什么
#include <iostream> using namespace std; struct A { virtual void f() { cout << "A"; } }; struct B : A { void f() override { cout << "B"; } }; void call(A a) { a.f(); } int main() { B b; call(b); return 0; }
正确
对象切片问题。call()参数按值传递,生成的是A的副本,虚函数机制失效。
错误
对象切片问题。call()参数按值传递,生成的是A的副本,虚函数机制失效。
-
3/10问题
3. 问题
关于noexcept说明符的作用,错误的是
正确
noexcept不阻止函数抛出异常,但抛出异常时会直接调用std::terminate。
错误
noexcept不阻止函数抛出异常,但抛出异常时会直接调用std::terminate。
-
4/10问题
4. 问题
以下代码的输出是什么
#include <iostream> using namespace std; int main() { int x = 0; cout << [&x]() mutable { return ++x; }(); return 0; }
正确
Lambda通过引用捕获x,mutable允许修改捕获的变量,返回++x的结果。
错误
Lambda通过引用捕获x,mutable允许修改捕获的变量,返回++x的结果。
-
5/10问题
5. 问题
关于std::optional的正确描述是
正确
std::optional专门用于表示可能有值也可能无值的场景。
错误
std::optional专门用于表示可能有值也可能无值的场景。
-
6/10问题
6. 问题
以下代码的输出是什么
#include <iostream> using namespace std; int main() { alignas(16) int a; cout << alignof(a); return 0; }
正确
alignas(16)指定变量a的字节对齐为16,alignof返回对齐值。
错误
alignas(16)指定变量a的字节对齐为16,alignof返回对齐值。
-
7/10问题
7. 问题
关于C++17的std::string_view,错误的是
正确
std::string_view是只读视图,不能通过它修改原始字符串。
错误
std::string_view是只读视图,不能通过它修改原始字符串。
-
8/10问题
8. 问题
以下代码的输出是什么?
#include <iostream> using namespace std; template<typename... Args> void print(Args... args) { (cout << ... << args) << endl; } int main() { print(1, " ", 2.0); return 0; }
正确
这是C++17的折叠表达式,2.0输出时会省略小数点后的零。
错误
这是C++17的折叠表达式,2.0输出时会省略小数点后的零。
-
9/10问题
9. 问题
关于std::shared_ptr的线程安全性,正确的是
正确
std::shared_ptr的引用计数操作是原子的,但指向的对象仍需额外同步。
错误
std::shared_ptr的引用计数操作是原子的,但指向的对象仍需额外同步。
-
10/10问题
10. 问题
以下代码的输出是什么
#include <iostream> using namespace std; struct S { S() { cout << "S"; } ~S() { cout << "~S"; } }; int main() { S* s = new S[3]; delete[] s; return 0; }
正确
new[]调用3次构造函数,delete[]调用3次析构函数,顺序相反。
错误
new[]调用3次构造函数,delete[]调用3次析构函数,顺序相反。