今天给自己定的读书任务也算完成了,C++ Primer 第二章,记的东西都是自己以前不太会或者不知道的东西,而且学习了两章之后发现要记的东西越来越多了。。
有一种wchar_t(宽字符型,16位)数据类型,用于存储扩展字符集,比如汉语和日语。
在32位机器上int和long类型通常字长是相同的。
将“长”的数据类型赋值给“短”的数据类型,会对其求模后再赋值。(例如:int型赋给char型)
1 2 3 4 5 6 7 | 20 /*decimal(十进制)*/ 024 /*octal(八进制)*/ 0x14 /*hexadecimal(十六进制)*/ 128u /*unsigned*/ 1L /*long*/ 1024UL /*unsigned long*/ 8Lu /*unsigned long*/ |
1 2 | 'a' /*char*/ L'a' /*wchar_t*/ |
‘A’表示字符A,”A”表示两个字符的字符串。L’A'、L”A”同理。
两个相邻的仅由空格、制表符或换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。这使得多行书写字面值字符串变得简单:
1 2 3 4 | std::cout << "a multi-line " "string literal " "using concatenation" << std::endl; |
执行结果:
1 | a multi-line string literal using concatenation |
1 2 | int vial(1024); //direct-initialization(直接初始化),注:相比复制初始化语法更灵活,效率更高。 int vial = 1024; //copy-initialization(复制初始化),注:这是初始化的一种方法,并不是一个赋值操作。 |
ps:定义的变量本身也是个类的对象。
如果不初始化,“段错误”是小事,如果把未初始化的错误的值当作正确值来处理,会导致结果运算错误。
定义:definiton,用于为变量分配存储空间。同一个程序中变量有且仅有一个定义。
声明:用于向程序表明变量和名字。extern用于声明而不定义一个变量。声明可以多次,定义只能有一次。
例:
1 2 | int ival = 1024; int &refval = ival; |
用来定义类型的同义词。
使用typedef的目的有三个:
1.隐藏特定类型的实现,强调使用类型的目的。
2.简化复杂的类型定义,使其更易理解。
3.允许一种类型用于多个目的,用时使得每次使用该类型的目的明确。
例:
1 2 3 | enum open_modes {input, output, append};//input = 0, output = 1, append =2 enum Forms {shape = 1, sphere, cylinder, polygon};//shape = 1, sphere = 2, cylinder = 3, polygon = 4 enum Points { point2d = 2, point2w, point3d = 3, point3w };//point2d = 2, point2w = 3, point3d = 3, point3w = 4 |
不能改变枚举的值,他本身就是一个常量表达式。
每个枚举都定义一种唯一的类型。
1 2 3 4 | Points pt3d = point3d;//ok Points pt2w = 3;//error pt2w = polygon;//error pt2w = pt3d;//ok |
唯一不同的地方是默认的初始访问级别,class默认位private,struct为public。
有三个例外,头文件可以定义类、值在编译时就已知道的const对象和inline函数。
1 2 3 4 5 6 7 8 | #ifdef MYCLASS_H #define MYCLASS_H //头文件中内容 class MyClass { }; #endif |


后退
Void
Life
Earth
Wind « Default
Water
Fire
Light 