%lld和%llu来格式化有符号和无符号的longlong整型
AI时代,有人焦虑失业,有人偷偷变强,不写代码不烧脑~
感受一句话的力量
AI时代,有人焦虑失业,有人偷偷变强,不写代码不烧脑~
%lld和%llu来格式化有符号和无符号的longlong整型
在C++17的标准中有4种折叠规则,分别是一元向左折叠、一元向右折叠、二元向左折叠和二元向右折叠。
常量左值引用的特性显得更加有趣,它除了能引用左值,还能够引用右值
值类别是C++11标准中新引入的概念,具体来说它是表达式的一种属性,该属性将表达式分为3个类别,它们分别是左值(lvalue)、纯右值(prvalue)和将亡值(xvalue)
另外在C++20标准中,nodiscard属性还能用于构造函数,它会在类型构建临时对象的时候让编译器发出警告
在类模板中,模板形参包必须是模板形参列表的最后一个形参
auto和decltype(auto)的用法几乎相同,只是在推导规则上遵循decltype而已
万能引用能如此灵活地引用对象,实际上是因为在C++11中添加了一套引用叠加推导的规则——引用折叠
noexcept是一个与异常相关的关键字,它既是一个说明符,也是一个运算符
在C++20标准中,基于范围的for循环增加了对初始化语句的支持
如果在代理构造函数执行完成后,委托构造函数主体抛出了异常,则自动调用该类型的析构函数。
C++17标准允许使用一种更简洁的形式描述嵌套命名空间
请注意,如果有多重返回值,那么需要保证返回值类型是相同的。
如果一个异常在代理构造函数的初始化列表或者主体中被抛出,那么委托构造函数的主体将不再被执行,与之相对的,控制权会交到异常捕获的catch代码块中:
对于万能引用的形参来说,如果实参是给左值,则形参被推导为左值引用;反之如果实参是一个右值,则形参被推导为右值引用,
显式删除类的析构函数在某种程度上和删除new运算符的目的正好相反,它阻止类通过自动变量、静态变量或者全局变量的方式创建对象,但是却可以通过new运算符创建对象。
2.begin和end函数需要返回一组类似迭代器的对象,并且这组对象必须支持operator*、operator!=和operator++运算符函数。
(1)直接使用列表初始化,列表中必须为单元素,否则无法编译,auto类型被推导为单元素的类型。
std::move一定会将实参转换为一个右值引用,并且使用std::move不需要指定模板实参,模板实参是由函数调用推导出来的。而std::forward会根据左值和右值的实际情况进行转发,在使用的时候需要指定模板实参。
C++20标准中引入了指定初始化的特性。该特性允许指定初始化数据成员的名称,从而使代码意图更加明确。