《Effective C++》
《Effective C++》我不知道我是否能快速把这本书读完,但我一定尽快,并整理自己的感悟!
有人说C+ +程序员可以分成两类,读过Effective C+ +的和没读过的。世界顶级C+ +大师Scott Meyers成名之作的第三版的确当得起这样的评价。当您读过这本书之后,就获得了迅速提升自己C++功力的一个契机。
在国际上.本书所引起的反响,波及整个计算技术出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,本书都会位于前三名。作者高超的技术把握力、独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。这种奇特的现象,只能解释为人们对这本书衷心的赞美和推崇。这本书不是读完一遍就可以束之 高阁的快餐读物,也不是用以解决手边问题的参考手册,而是需要您去反复阅读体会的,C++是真正程序员的语言,背后有着精深的思想与无与伦比的表达能力,这使得它具有类似宗教般的魅力。希望这本书能够帮助您跨越C++的重重险阻,领略高处才有的壮美风光,做-一个成功而快乐的C++程序员。
——引言
《Effective C++》中的一些命名习惯
命名习惯在阅读这本开始之际,作者就一些命名习惯(不是命名空间哦)做了详细阐述,以方便我们平时阅读过程以及开发过程中如何命名变量名,甚觉对个人编程上一些基础的东西有极大的帮助,整理如下:
用途
含义
变量名
二元操作符
左手端(left-hand side)
lhs
二元操作符
右手短(right-hand side)
rhs
指向一个T型对象
pointer to T
pt
指向一个Widget的指针
ptr to Wodget
pw
指向一个airplane的指针
ptr to Airplane
pa
指向一个GameCharacter的指针
ptr to GameCharacter
pgc
对于引用(reference),则习惯以r*的形式命名。例如reference to widget,变量名为rw,ra则是reference to Airplane。
而对于成员函数,则可以以mf为名。
《Effective C++》条款20~21
条款20:宁以pass-by-reference-to-const替换pass-by-value
条款21:必须返回对象时,别往相反其reference
pass-by-value和pass-by-reference
20、21章 讲了函数传参过程引用传值和值传递应该以什么样的形式去处理。从函数的入口和出口两个方面讲了
STL和C++11
STL和C++11
参考《C++ primer Plus 第六版》
1 array容器array容易一旦声明,其长度就是固定的,他使用静态(栈)内存,而不是动态分配的内存。提供它旨在替代数组;array受到的显示比vector多,但效率更高。
类型转换
四种类型转换运算符
C++成“神”之路—浮点数
本篇为基础浮点数用法学习记录
wchar_t
类型
大小
表示范围
char
4字节
-128~127
signed char
4字节
-128~127
unsiged char
4字节
0~255
wchar_t(整数类型、宽字符类型)
8字节
wcahr_t:可以拜师扩展字符集,iostream头文件的最新版提供了作用相似的工具——wcin和wcout,可用于处理wchar_t流,==可以通过加上前缀L来指示宽字符常量和宽字符串
12wcahr_t bob = L'P';wcout << L"tall";
C++11新增的类型char16_t和char32_t(两者均是无符号的)
char16_t
使用前缀u表示
char16_t ch1 =u’q’;
char32_t
使用前缀U表示
char32_t ch2 = U’\U000022B’;
原始(raw)字符串
使用前缀R来标识原值字符串
12345cout << R"(Jim &qu ...
共用体(union)
共用体定义用体(union)是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也
就是说,结构可以同时存储int、long 和double,共用体只能存储 int、long或double。共用体的句法与结
构相似,但含义不同。例:
12345union one4all { int int_val; long long_val; double double_val;};
具体使用如下所示:
123456789101112131415161718192021222324#include <iostream>#include "main.h"using namespace std;//创建一个共用体union one4all { int int_val; long long_val; double double_val;};int main(){ //在同一时间只能之勇union中变量的一种 one4all temp; temp.int_val = 10; cout << te ...
枚举(enum)
枚举C++的枚举工具提供了另一种创建符号常量的方式,这种方式可以代替const。还允许定义新类型,但必须按严格的限制执行。使用enum的句法与struct类似。
enum color { red, orange, blue, green, red, black}
这条语句定义了一个名为color的新类型,它的取值范围为red, orange, blue, green, red, black,称为符号常量,同时将0~5分别对应于red~black。在默认情况下,0对应的是red,5对应的是black,其他以此类推。
声明与使用1234color cor1; //定义了一个类型为color的变量cor1//枚举变量的赋值cor1 = red; //正常赋值cor1 = 20; //非法,20不是枚举变量
由此可以看出,枚举变量的赋值受到限制,与程序员的定义有关。
对枚举而言,它的操作符只有赋值运算符=,这就意味着枚举变量不能执行++、--、+、—等等号以外的操作。
枚举量是整形,可被提升为int类型,但int类型不能自动转换为枚举类型
枚举可以进行强制类型转换,但 ...
string函数的用法
本篇教程为基础string用法
1、sizeof()与strlen()get()与getline()的区别
两者都能读取一行输入,知道到达换行符,但是getline()将丢弃换行符,而get()会将换行符保留在输入序列中
1long totals[500] = {0}; //只要显式地将第一个元素初始化为0,然后让编译器将其他元素都初始化为0;如果初始化为1)而不是{0},则第一个元素被设置为1.其他元素都被设置为
再确定存储字符串所需的最短数组时,别忘了将结尾的空字符串计算在内
1"S" = 'S' + '\0'
==sizeof==运算符指出整个数组的长度,但==strlen()==函数返回的是当前存储在数组中的字符串长度,而不是数组本身的长度。
1234const int Arsize = 15;char name2[Arsize] = "C++OWboy";//通过设置符号常量的地址即可对数组长度进行修改name2[3] = '\0' ...
C++“内联函数”
短小函数在C和C++中的不同实现