从来没有正式学习过C++,感觉很多基础知识都不懂。。。
果断买一本C++Primer 开始学习。。。。
今天是开始看的第二天。先写点发现的新东西吧。。
1. std::endl是操纵符(manipulator),从C++primer的附录中看,操纵符有好几个,不过貌似都是控制std::cout的输出格式的
2.wchat_t 居然是C++内置类型。。。。。其长度是char的两倍
3.std::cerr和std::clog都是绑定到标准错误输出的,区别是,std::cerr不缓冲,std::clog缓冲
4.将一个超过范围的值赋给unsigned变量时(比如将336赋给unsigned char),将会取该值对取值范围取模(336%256=80)。但是如果是signed变量,则结果由编译器决定!(坑爹呢~~)
5.左值可以出现在赋值语句左边或右边,右值只能出现在赋值语句右边。即右值不能被赋值。 关于左值表达式:http://hi.baidu.com/yfsq/blog/item/555213511be32e2243a75b55.html/cmtid/3ee3de4372799b1e9213c612
6.非const引用只能绑定到和它同类型的对象。const引用则无此限定。可以绑定到字面值常量和不同但相关类型的对象(double d = 0.3; const int &r = d;)
7.Q:为什么头文件中只能有声明,不能有定义?(类定义,编译时值已确定的const常量和inline函数例外)
A:因为头文件可能被包含多次,而定义只能出现一次,所以只能声明,不能定义!
Q:那如果用头文件保护符呢?(#ifndef __HEADER__H__ ......)
A:头文件保护符只能保证在一个编译单元(一个.cc 源文件作为一个编译单元生成.o)中不被重复包含。如果是不同的编译单元则无效。所以当程序包含多个编译单元时还是会有重复定义出现
Q:那为什么会有例外?
A:因为类定义和普通变量定义不一样。普通变量定义会分配内存空间;而类定义只是告诉编译器这个类的数据格式和实例化后占用多大空间!但是在同一编译单元内还是不能重复定义类,不同编译单元可以,这就是为什么头文件可以包含类的定义。
引用:http://hi.baidu.com/dj_chen/blog/item/5d80ea4ee64f743daec3abd6.html
8.关于在头文件中定义const变量。。木有看懂 ╮(╯▽╰)╭!!!