阳光烂灿的日子

--记录所有碎碎念

C++0x FAQ摘抄

| Comments

有{間}客栈的博客上看到C++0x的中文FAQ,学习浏览了一下,对于自己需要记住的内容摘抄了一些以备忘。

一些代码段和句子是直接抄录下来的。并且下面列的也不是全的特性,只是列出了我容易理解并想要记住的部分。

1.auto 类型
从初始化中推断数据类型,应用方面来说,定义迭代器的时候可以用。

for(auto p =v.begin(); p!=v.end(); ++p)
cout<<*p<<”\n”;

2. 枚举类–具有类域和强类型的枚举
enum class Color {red,blue}
枚举值外部不可见,要加类名Color::red
不会默认转成int

可指定底层数据类型
enum class Color:char; //前向声明
enum class Color:char {red,blue}; //定义

3. constexpr 常量表达式

4.delctype
如果你仅仅是想根据初始化值为一个变量推断合适的数据类型,那么使用auto是一个更加简单的选择。
当你只有需要推断某个表达式的数据类型,例如某个函数调用表达式的计算结果的数据类型,
而不是某个变量的数据类型时,你才真正需要delctype。

5. 控制默认函数
X& operator=(const X&)=delete; //禁用类的赋值操作符
X(const X&)=delete;
Y(const Y&)=default; //使用默认的拷贝构造函数

6. 委托构造函数
可以在一个构造函数中调用另一个构造函数
X():X{42}{} //g++ 4.6中似乎还不支持

7. nullptr 空指针标识
NULL只是一个宏,定义为整数0. nullptr是c++0x的关键字,内建标识符
char* p = nullptr;

8.序列for循环语句
for (auto x : v) cout << x << ‘\n’;
for (auto& x : v) ++x; // 使用引用,方便我们修改容器中的数据
for (const auto x : { 1,2,3,5,8,13,21,34 }) cout << x << ‘\n’;
9. 返回类型后置语法
template [] mul(T x, U y){return x*y;}

10. 类内部成员的初始化
C++98标准里只有static const 声明的成员能在类内部初始化。现在普通数据成员也能直接赋值

11. 原生字符串标识
strings s = R”[\w\w]” //不用考虑里的转义字符了

Comments