noexcept
void function() noexcept{}函数不抛出任何异常,减少异常处理的成本,提高运行效率
inline namespace temp{int xx = 0;
}
assert(xx==0);//无需名字空间限制,可直接访问
namespace release{namespace v001{void func(){}
}
inline namespace v002{void func(){}
}
}
release::func();//调用v002版
多个子命名空间对外只暴露一个,很好的隔离版本间的差异,利于维护
三、强制枚举类型c++中的枚举是弱类型,相当于整数,c++11/14可以用enum class/struct的形式声明强类型引用,它不能被隐式转换为整形,使用也必须使用类型名限定访问枚举值,就像类的静态成员一样
还使用char、int 等,指示枚举使用的整数类型
enum class color:char{}//枚举使用char类型存储
enum {red=1,green=2,blue=3
};
assert(red == green-1);
int red = 1;
enum class color{...}
auto x = color::red;
auto y = red; //错误必须添加限定名
auto z = color::red -1; //错误不能隐式转换成整形
四、属性[[attribute]]标记编译特征,指示编译器做某种程度的优化
[[deprecated]] int x = 0; //x已经被废弃
class [[deprecated]] demo{};//demo 已经被废弃
五、语言版本宏__cplusplus是个整形常数
199711L c++98/03
201103L c++11
201402L c++14
可用于条件编译的判断逻辑
#if __cplusplus< 201103L
#error ""
#endif
六、超长整形long long 至少是64位
LL/ll ULL/ull/uLL显示说明整形是long long
auto a = 11111LL;
auto b = 2222222ULL;
七、原始字符串R"(…)"
string s = R"(this is a "\string\")";
cout<
还支持最多16个字符的delimiter,()两边必须相同,且不能是@ $ \等特殊字符
a = R"***(dark souls)***";
八、自定义字面值字面值需要重载"“函数名必须以_开头
return_type operator”" _suffix(unsinged long long );
long operator"" _kb(unsigned long long v)
{return v * 1024;}
auto x = 2_kb;
assert(x==2*1024);实际值20148
c++14增加的自定义字面值
h/min/s/ms
auto t1 = 2min;//2分钟
auto t2 = 30s;//30秒
auto s = "std string type"s;//标准字符串,不是秒
七、其他1、右尖括号
“>>“优先解释为模板,而不是按位右移
2、函数的默认模板参数
模板函数可以使用默认参数
3、增强联合体
可以有构造/析构函数和成员函数,但是不能有虚函数和引用成员
4、二进制字面值
0b /0B直接书写二进制数字
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧