- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ThinkingInCNote
前言
想好好学习C++很久了,一直没认认真真的看完,不过这次总算看完了,说说最大的感受,先是明确了指针,值,引用之间的联系和区别,这个参考resource中的文档可以更好说明。另外对于const有了更好的理解,很有用哦。还有很多,就不一一说了,以下内容是对thinking in C++ 看后的读感及相关知识点自已的归纳。第一卷主要是偏基础,对于很多概念,规则进行了很深入的分析和解释,第二卷我觉得偏应用,对于如何更好的编出C++程序进行了一个很好的讲述。
另外TIC书最后的索引面是非常有用的,可以对一些关键字更好的索引,查寻很方便
关键字:
TIC1:Thinking In C++ 第1卷 中文版
TIC2:Thinking In C++ 第2卷 中文版
CP :C++ primer plus
对象的创建与使用
这个部分主要是说解释器,预处理器,编译器相关的内容。C++用的是预处理器和编译器,像basic这种用的是解释器,下面解释一下这三个名词。
解释器:是能够执行用其他计算机语言编写的程序的系统软件,它是一种翻译程序。它的执行方式是一边翻译一边执行,因此其执行效率一般偏低,但是解释器的实现较为简单,而且编写源程序的高级语言可以使用更加灵活和富于表现力的语法。
预处理器是在真正的翻译开始之前由编译器调用的独立程序。预处理器可以删除注释、包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代。预处理器可由语言(如C)要求或以后作为提供额外功能(诸如为FORTRAN提供Ratfor预处理器)的附加软件。编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。一个现代编译器的主要工作流程如下:
源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)指针和数组是不一样的,但数组做为参数传递时就会退化为同类型的指针.Extern 这个关键字还是有用的,特别是有分段编译的时候,如你在一个地方写了extern int a;时这就表示在其他作用域一定有这个变量存在,你如果include进来的话就可以直接使用啦。
Static变量只在函数或类的第一次调用时初始化,之后就不动了。放在静态存储区。这个概念要明白,静态存储区,堆栈区,堆区这3个的区别。Static用于变量或函数的另一个意思就是在分段编译时其他文件(file scope)不可以使用这个名字。
转型:这个主要是在基本数据类型和类继承之中用的比较多的,基本数据类型小的向大转型会填补空白位,大的转小的就会截断。类就是向上和向下转型,但一定要遵循继承的规则否则会出错,这里说dynamic_cast主要是用于类的安全向下转型,这个安全要求安但开销大一点,如果很明确转型类弄也可用static_cast这个开销小,事实上多数都是这个的。详见TIC 1 P81 P385。 另外如果要从const转成非 const 需要用const_cast,这个没啥技术含量,只有这个办法,详见TIC1 P82
Sizeof是运算符,不是函数,这个总忘记以前。功能是告诉我们变量或类型已使用或应使用的字节数。应用于类型的话要加(),直接算变量的话不用刮号了。
Typedef这个关键字以前总是让我迷惑,特别是和struct一起用的时候。Typedef的格式是“typedef 原类型名 别名”,这里注意了,原类型名可以是一个sturct的结构或一个类,都可以。后面再跟个名字只是别名,不是对象哦!!
Struct 定义好了可建对象要 “struct 结构名 对象名”,这样不方便,定义时和typedef联用的话可以得到一个别名,这样直接就 “别名 对象名”就可以建立对象了。
Union这个类型不错,节约内存,他只存一个单独的空间,以其中最大的数据为大小,只放一个值。不复杂见 TIC 1 P89
函数指针,这个东西真不想碰呀,复杂。格式切记要和返回值用()分开呀!如下格式是: int (*getValue)(int index); 第一个int是返回值 ,(*getValue)是函数地址,后面是形参。定义好了要初始化,当然也可以一起写,只要用名字和=函数名就可以了,如getValue=ExistFunctionName; 之后再调用一下
文档评论(0)