C++基础面试题, C++11 中有哪些常用的新特性?
C++基础面试题, C++11 中有哪些常用的新特性?
QA
Step 1
Q:: C++11
中有哪些常用的新特性?
A:: C++11
引入了许多新特性,以下是一些常用的特性:
1.
auto
关键字:用于自动类型推导,可以让代码更加简洁。
2.
lambda
表达式:提供了一种内联定义匿名函数的方式。
3.
nullptr
:代替 NULL
,更清晰地表示空指针。
4.
constexpr
:允许在编译期进行计算的常量表达式。
5.
range-based for
循环:简化了对容器的遍历操作。
6.
移动语义和 std::move
:通过移动构造函数和移动赋值运算符,提高对象转移的效率,避免不必要的拷贝。
7. 智能指针 (``std::shared_ptr``,
std::unique_ptr``)
:提供了安全的内存管理。
8. 多线程支持 (``std::thread``,
std::mutex``,
std::lock_guard``)
:标准库中加入了对多线程的支持。
Step 2
Q:: 什么是 auto
关键字?
A:: auto
关键字用于在声明变量时让编译器自动推导变量的类型。这样可以使代码更简洁,也减少了因手动指定类型可能导致的错误。
Step 3
Q:: C++11
中的 lambda
表达式有什么用?
A:: lambda
表达式在 C++11
中引入,允许在函数内部创建匿名函数。它们通常用于简化代码,尤其是在需要传递简单的回调函数或进行简单的操作时。例如:[capture](parameters) -> return_type { function_body }
是一个典型的 lambda 表达式的语法结构。
Step 4
Q:: 为什么引入 nullptr
而不是继续使用 NULL
?
A:: nullptr
是 C++11
引入的一个关键字,用来表示空指针。与 NULL
不同,nullptr
是类型安全的,可以避免将整型值误解为指针。使用 nullptr
可以让代码更具可读性和安全性。
Step 5
Q:: C++11
中的 constexpr
有什么作用?
A:: constexpr
是 C++11
引入的一个关键字,用于声明可以在编译期计算的常量表达式。它的作用是允许编译器在编译阶段计算表达式值,从而提高运行时的效率。