http://en.cppreference.com/w/cpp/io/clog
clog 绑定到标准错误的 ostream 对象。默认情况下,写到 clog 时是带缓冲 的。通常用于将程序执行信息写入到日志文件中
C++ 中,把负值赋给 unsigned 对象是完全合法的,其结果是 该负数对该类型的取值个数求模后的值
L’a’ 宽字符字面值
与其他变量不同,除非特别说明,在全局作用域声明的 const 变量是定义 该对象的文件的局部变量.
此变量只存在于那个文件中,不能被其他文件访问.通过指定 const 变更为 extern,就可以在整个程序中访问 const 对象.非 const 变量默认为 extern。要使 const 变量能够在其他的 文件中访问,必须地指定它为 extern
枚举成员是常量.枚举成员值可以是不唯一的
定义类时,通常先定义该类的接口,即该类所提供的操作。通过这些操作, 可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持该类 的实现
------------------------------------------------------------------------------------------------------------------
using std::cin;
using std::string;
getline 函数返回时丢弃换行符,换行符将不会存储
我们不知道 string::size_type 的确切类型,但可以知道它是 unsigned 型
虽然任何整型数值都可作为索引,但索引的实际数据类型却是类 型 unsigned 类型 string::size_type
#inclue<cctype> 处理字符
由 end 操作返回的迭代器并不指向 vector 中任何实际的元 素,相反,它只是起一个哨兵(sentinel)的作用,表示我们 已处理完 vector 中所有元素
size_t
在 cstddef 头文件中定义的机器相关的无符号整型,该类型足以保存最大 数组的长度
------------------------------------------------------------------------------------------------------------------
不允许数组直接复制和赋值
在用下标访问元素时,vector 使用 vector::size_type 作为下标的类型, 而数组下标的正确类型则是 size_t
使用 strn 函数处理 C 风格字符串
C++ 虽然不允许定义长度为 0 的数组变量,但明确指出,调用 new 动态创 建长度为 0 的数组是合法的
只有在必要时才使用后置操作符
(*p).foo === p->foo
++ 的优先级高于*操作符
C++ 保证:删除 0 值的指针是安全的
在 delete 之后,重设指针的值
只有使用 const_cast 才能将 const 性质转换掉
编译器隐式执行的任何类型转换都可以由 static_cast 显式完成
reinterpret_cast 通常为操作数的位模式提供较低层次的重新解释
避免使用强制类型转换
int *ip;
char *pc = reinterpret_cast<char*>(ip);
程序员必须永远记得 pc 所指向的真实对象其实是 int 型
如何看待 reinterpret_cast 的使用时非常重要。此类强制 转换总是非常危险的。相似地,使用 const_cast 也总是预示着设计缺 陷。设计合理的系统应不需要使用强制转换抛弃 const 特性。其他的强 制转换,如 static_cast 和 dynamic_cast,各有各的用途,但都不应 频繁使用