09C++11保证稳定性和兼容性
2021-04-14 21:29
标签:machine 条件 注意 描述符 erro temp friend long deft ? c++ 中,在进行隐式类型转换时,一般按照低等级整型转换成高等级整型(长度越大的等级越高、相同大小的有符号类型和无符号类型的等级相同),有符号的转换为无符号。 ? 在 c++ 中,标准在 ? 通过预处理指令 #if 和 #error 的配合,也可以让程序员在预处理阶段进行断言。 ? c++11 引入的静态断言 static_assert 可以用来在编译时做一些断言。static_assert 接收两个参数,一个是断言表达式,这个表达式通常需要返回一个 bool 值;一个则是警告信息,它通常也就是一段字符串。当断言表达式结果为false,则会打印提示信息。 ? 必须注意的是, static_assert 的断言表达式的结果必须是在编译时期可以计算的表达式,及必须是常量表达式。如果使用了变量,则会导致错误。 ? noexcept,表示其修饰的函数不会抛出异常。在 c++11 中,如果 noexcept 修饰的函数抛出了异常,编译器可以选择直接调用 std::teminate() 函数来终止程序的运行,这比基于异常机制的 throw() 在效率上会高一些..... ? c++11 中,声明友元类的时候可以省略 class 关键字,并且也可以使用 typedef 声明的类。这样的改动,使得程序员可以为类模板声明友元了。 PP; //类型P在这里是People类型的友元
People ? 如果派生类在虚函数声明时使用了 override 描述符,那么该函数必须重载器基类中的同名函数,否则代码将无法通过编译。 ? ——如果某子类中的函数接口后面添加了 override 关键字,则表示该接口是对基类虚接口的一个重载。 ? c++11 中,模板类和模板参数都允许有默认模板参数。 ? 不过在语法上,与类模板有些不同的是,在为多个默认模板参数声明制定默认值的时候,程序员必须遵照“从右往左”的规则进行指定。而这个条件对函数模板来说并不是不是必须的。 ? 09C++11保证稳定性和兼容性 标签:machine 条件 注意 描述符 erro temp friend long deft 原文地址:https://www.cnblogs.com/rock-cc/p/13335783.html1. long long 整型
2. 静态断言
static_assert(sizeof(int) == 8, "This 64-bit machine should follow this!");
int main()
{
return 0;
}
int positive(const int n)
{
static_assert(n>0, "value must >0");
}
3. noexcept 修饰符与 noexcept 操作符 (略)
4. 扩展的 friend 语法
class P;
template
5.override 关键字
6. 模板函数的默认模板参数
void defParm(int m=3){}
template
template