8.5 本章小结

本章中我们了解了C++11支持的4种新特性:对齐方式、通用属性、Unicode,以及原生字符串字面量。

对齐方式本是语言设计者想掩藏的细节,不过在C++11编程方式越发复杂的情况下,提供给用户更底层的手段往往是必不可少的。在一些情况下,用户虽然不能保证总是写出平台无关,或者说各平台性能最优的代码,但只需改造alignas之后的对齐值参数就可以保证程序的移植性及性能良好,也不失为一种好的选择。而C++11对对齐方式的支持从语法规则到库,基本上考虑到了各种情况,可以说是相当完备的。

而通用属性则像是关键字的包装器。一度有人认为,C++应该是用通用属性而不是关键字来实现一些特征,不过最后的结论却是:语言本身的所有特性都应该是关键字,通用属性仅仅用在不改变语义的场合,比如产生编译警告、优化提示等。从现在的情况看来,通用属性的语法规则意义大于现在已有的两个预定义通用属性。编译器厂商或组织或者标准委员会在对语言进行扩展的时候,可能还会利用这样的通用属性的语法规则。

C++11还增强了对Unicode的支持。针对以前长度并不明确的wchar_t,增加了char16_t及char32_t两种内置类型。考虑到变长编码UTF-8使用上的不方便,以及定长的UTF-16和UTF-32在存储或者一些其他方面的弱势,C++11在逐步加强对Unicode类型转换方面的支持。不过基于Unicode的编程是否容易了很多,可移植性是否加强了很多,可能还需要各位读者慢慢体会。此外,C++11还支持了原生字符串字面量。这是一个在其他较晚发明的语言中常见的特性,C++11将其引入其中,也算方便了程序员对C++字符串的学习和使用。