From 27-Feb, 2017 to 31-Mar, 2017(ET)
Day 05
头文件不应包含using声明,防止头文件被引用到其他文件造成名字冲突。
Day 04
表达式不要混用有符号和无符号类型,因为这时有符号会自动转化为无符号数。
unsigned u = 10;
int i = -42;
cout << u + i << endl; // 4294967264
无符号相减要确保结果不为负。
unsigned u1 = 42, u2 = 10;
cout << u2 - u1 << endl; // 4294967264
引用不是对象。
const对象被设定为仅在文件内有效,如果想在多个文件之间共享const对象,必须在定义和声明都添加extern关键字。
第二章小结:介绍数据类型,太较真概念性的知识点,虽然有用,但是略枯燥,而且容易忘,比如顶层const底层const,虽然分不清但是在代码里能分得清const限定的是什么,这也就足够了,如果使用中有疑惑会混淆再来定点查阅吧。
Day 03
在算术表达式中不要使用char或者bool,char在很多机器上是有符号的,但在有些机器(arm架构)上是无符号的。
(Personally)看一个机器上的char默认是不是有符号的,可以把一个大于128的整数赋给一个char类型变量,如0xe4,signed char打印是-28,unsigned char是228。
当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表达数值总数取模后的余数;赋给有符号类型一个超出它表示范围的值时,结果未定义。
Day 02
测试程序需要反复键盘敲入一些同质的数据时,可以考虑使用文件重定向。
> 和 >>后结的文件不存在时都会自动先创建,如果存在前者会清空替换内容,后者是在原有内容上追加。
第一章小结:这章主要介绍了头文件、注释、控制结构(for循环、while循环、if-else)、类定义相关的基础知识。有基础的可以直接阅读一下源码中的头文件Sales_item.h,自己写几个简单的用例测试一下,熟悉的完全可以跳过这一章。
Day 01
C++11的新特性,GCC 4.8以下在编译需指定-std=c++0x。
编译器版本支持说明:http://cpprocks.com/c11-compiler-support-shootout-visual-studio-gcc-clang-intel/
配套源码下载:http://www.informit.com/store/c-plus-plus-primer-9780321714114
GNU低版本的下载GCC_pre_C11.zip
e.g., 书店程序的头文件Sales_item.h使用=default生成默认无参构造函数。
Sales_item() = default;