随笔分类 - C/C++笔记

摘要:第1章 跟踪范例 第2章 构造函数和析构函数 第3章 虚函数 1. 虚函数造成的性能损失 第4章 返回值优化 任何时候只要跳过了对象的创建和清除,就将会获得性能上的收益。返回值优化RVO(Return Value Optimization)是由编译器实现的优化,它用于加速源代码,是通过对源代码进行转化并消除对象的创建来实现的。 1. 按值返回的构造 下面是Complex类: classComplex{friendComplexoperator+(constComplex&,constComplex&);public:Complex(doubler=0.0,doublei=0.0 阅读全文
posted @ 2012-08-19 21:54 Mr.Rico 阅读 (398) | 评论 (0) 编辑
摘要:条款1:指针与引用的区别 条款2:尽量使用C++风格的类型转换 条款3:不要对数组使用多态 条款4:避免误用的缺省构造函数 条款5:谨慎定义类型转换函数 隐式转换的实现方式:单参数构造函数和隐式类型转换操作符。 条款6:自增,自减操作符前缀形式和后缀形式的区别 条款7:不要重载&&,||或, 条款8:理解各种不同含义的new和delete new 操作符(new operator)和new 操作(operator new)的区别。 new操作符调用一个函数来完成必要的内存分配,你能够重写或重载这个函数来改变这个行为。new操作符为分配内存所调用的函数名字是operator ne 阅读全文
posted @ 2012-08-19 21:49 Mr.Rico 阅读 (177) | 评论 (0) 编辑
摘要:条款01:视C++为一个语言联邦 条款02:尽量以const,enum,inline替换#define 条款03:尽可能使用const 条款04:确定对象使用前先被初始化 条款05:了解C++默认编写并调用哪些函数 条款06:若不想使用编译器自动生成的函数,就该明确拒绝 条款07:为多态基类声明virtual析构函数 条款08:别让异常逃离析构函数 1. 编译单元 为免除"跨编译单元之初始化次序"问题,请以local static 对象替换non-local static对象。为免除"跨编译单元之初始化次序"问题,请以local static 对象替换n 阅读全文
posted @ 2012-08-19 21:47 Mr.Rico 阅读 (114) | 评论 (0) 编辑
摘要:1. vector中元素的访问:[]与at操作 2. 调整vector的大小:reserve reserve是保证vector的容量至少为某个值,它不会减少vector的容量。 resize是改变vector的大小,这个操作比较严格,给出多少,结果vector的容量就变为多少。 3. sprint的替代方案 4. 定位new表达式 5. 模板特化与函数重载 类模板可以被偏特化或者全特化,函数模板则只能够被全特化 重载决议只决定选出主模板 分析下面的代码: #includeusingnamespacestd;templatevoidf(T){coutvoidf(T*){coutvoidf(int 阅读全文
posted @ 2012-08-18 16:22 Mr.Rico 阅读 (119) | 评论 (0) 编辑
摘要:1. std::cin和std::cout的类型是什么? 简单的回答,cin实际上是: std::basic_istream> cout实际上是: std::basic_ostream> 首先,cin和cout具有的类型分别是std::istream和std::ostream,接着,这些类型是std::basic_istream和std::basic_ostream的typedef,最后,考虑到模板参数的默认值,得到上面的答案。 #include#includeintmain(intargc,char*argv[]){usingnamespacestd;(argc>2?ofs 阅读全文
posted @ 2012-08-17 21:18 Mr.Rico 阅读 (239) | 评论 (0) 编辑
摘要:1.Iterator使用设计准则2. 不区分大小写的string这儿主要是采用修改char_traists的方式来得到与标准库中string类似的类ci_string实例代码如下:View Code #include#include#includeusingnamespacestd;structci_char_traits:publicchar_traits{staticbooleq(charc1,charc2){returntoupper(c1)==toupper(c2);}staticboolne(charc1,charc2){returntoupper(c1)!=toupper(c2); 阅读全文
posted @ 2012-08-17 09:37 Mr.Rico 阅读 (109) | 评论 (0) 编辑
摘要:第1章 C++编程基础 1. 另一种初始化语法:构造函数语法(直接初始化) 第2章 面向过程的编程风格 1. 函数声明给出就是函数原型 第3章 泛型编程风格 1. 泛型算法 2. 容器的insert操作:在position之前插入元素 3. 容器的erase操作删除position所指向的元素 4. 函数对象function objects 函数对象的使用: View Code #include#include#include#include#includeusingnamespacestd;intmain(){intn=10;vectorli;for(inti=0;i::iteratorit 阅读全文
posted @ 2012-08-16 13:52 Mr.Rico 阅读 (197) | 评论 (0) 编辑
摘要:第12章 类1. 类的声明与定义:前向声明,不完全类型2. 从const函数返回*this3. 可变数据成员mutable4. 用于const对象的构造函数:构造函数不能声明为const5. 构造函数初始化式构造函数的执行分为两个阶段:初始化阶段和普通的计算阶段6. 构造函数初始化列表7. 默认实参与构造函数8. 类通常定义一个默认构造函数,不然的话使用起来会很麻烦。9. 使用默认构造函数10. 隐式类类型转换:使用explicit来杜绝隐式类类型的转换11. 类成员的显式初始化,这种显式初始化的方式是从C继承来的12. static类成员13. static成员函数14. static成员变 阅读全文
posted @ 2012-08-15 09:36 Mr.Rico 阅读 (325) | 评论 (0) 编辑
摘要:第2章 数据和基本类型 1. 整型 2. 习题:左值和右值 3. C++关键字/保留字和操作符替代值 4. 声明,定义, 初始化和赋值是不同的概念。 声明是说明一个变量的存在,不会为变量进行内存空间的分配。 定义是说明一个变量的存在,同时为这个变量分配对应的内存空间。 初始化就是在进行变量定义的时候在所分配的内存空间中同时填入有意义的值。如果不进行初始化的话,变量虽然有对应的内存空间,但是内存空间中对应 的内容却是无意义的。 赋值是为已经存在的变量的改写值,也就是重新擦写变量内存空间的数据,填入新的数据。 C++中因为有类的存在所以,对初始化进行了更细的划分,分为直接初始化和复制初始化。 C+ 阅读全文
posted @ 2012-08-15 01:59 Mr.Rico 阅读 (253) | 评论 (0) 编辑
摘要:练习5.9 自引用、 程序代码如下:View Code #includeusingnamespacestd;enumContext{c_comment,cpp_comment,string_literal,char_literal,file_end};voidhandle_c_comment(){charch;while(cin.get(ch)){if(ch=='*'){while(cin.get(ch)&&ch=='*');if(ch=='/')break;}}}voidhandle_cpp_comment(){charch;w 阅读全文
posted @ 2012-08-09 23:54 Mr.Rico 阅读 (169) | 评论 (0) 编辑
摘要:第1章 面向对象方法的优点1. C语言的目标2. C++语言的目标第2章 快速入门——C++简介1. C++关键字第5章 程序员定义数据类型的聚集第6章 内存管理:堆和栈1. 作用域2. 存储类型Static的用法第19章 总结 阅读全文
posted @ 2012-08-09 12:45 Mr.Rico 阅读 (182) | 评论 (0) 编辑
摘要:第1 章 使用字符串第7章 使用关联容器下面一个交叉引用表达代码,其中包括了getword函数View Code #include#include#include#includeusingnamespacestd;vectorgetwords(conststring&str){vectorret;staticstringdelim="\\/,.;:!~*`\'\"\t\b\n#(){}[]]&=-+";stringword;size_tpos,pos2;size_tlen=str.size();pos=-1;boolflag=true;wh 阅读全文
posted @ 2012-08-09 12:33 Mr.Rico 阅读 (139) | 评论 (0) 编辑
摘要:第2章 C++概述1. 数据类型的意义2. %的定义,与/的关系第7章 简单数据类型1. float与int差别2. 算数上溢与算数下溢第8章 流和文件1. 每次读取一个字符使用流输入输出的get函数和put函数2. 程序风格——使用流作为条件3. 使用ignore跳过换行符4. C++中的参数栈 阅读全文
posted @ 2012-08-06 18:06 Mr.Rico 阅读 (80) | 评论 (0) 编辑
摘要:Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 阅读全文
posted @ 2012-08-06 18:02 Mr.Rico 阅读 (103) | 评论 (0) 编辑
摘要:第1章 简介1. literate程序2. 宏指令与条件编译指令第2章 接口与实现1. 接口与实现的关系2. Arith接口及实现:arith.h:View Code /*$Id:H:/drh/idioms/book/RCS/inter.doc,v1.111997/02/2119:42:15drhExp$*/externintArith_max(intx,inty);externintArith_min(intx,inty);externintArith_div(intx,inty);externintArith_mod(intx,inty);externintArith_ceiling(in 阅读全文
posted @ 2012-08-06 00:35 Mr.Rico 阅读 (1351) | 评论 (1) 编辑
摘要:C程序设计语言(第2版)这儿有一篇写的很好的读后感:http://www.cnblogs.com/xkfz007/articles/2566424.html第1章 导言1. 单词计数#includeintmain(){intc,nl,nw,nc,flag;flag=0;nl=nw=nc=0;while((c=getchar())!=EOF){++nc;if(c=='\n')nl++;if(c==''||c=='\n'||c=='\t')flag=0;elseif(!flag){flag=1;++nw;}}printf(" 阅读全文
posted @ 2012-08-05 11:08 Mr.Rico 阅读 (2699) | 评论 (0) 编辑
摘要:第2章 数据类型与表达式 1. C++中的数据类型如下:2. C++中常量变量的值应该是可以变化的,怎么值是固定的量也称变量呢?其实,从计算机实现的角度看,变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。对常变量来说,无非在此变量的基础上加上一个限定: 存储单元中的值不允许变化。因此常变量又称为只读变量(read-only-variable)。 请区别用#define命令定义的符号常量和用const定义的常变量。符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换为所指定的字符串,它没有类型,在内存中并不存在以符号常量命名的存储单元。而常变 阅读全文
posted @ 2012-07-27 13:49 Mr.Rico 阅读 (313) | 评论 (0) 编辑
摘要:第1章 C语言概述1. C语言出现的历史背景C语言是国际上广泛流行的高级语言。C语言是在B语言的基础上发展起来的。B (BCPL)语言是1970年由美国贝尔实验室设计的, 并用于编写了第一个UNIX操作系统,在PDP 7上实现。优点:精练,接近硬件,缺点:过于简单,数据无类型。 1973年贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了C语言,对B取长补短,并用之改写了原来用汇编编写的UNIX,(即UNIX第5版),但仅在贝尔实验室使用。1975年UNIX第6版发布,C优点突出引起关注。1977年出现了《可移植C语言编译程序》 ,推动了UNIX在各种机器上实现 ,C语言也得到推广, 阅读全文
posted @ 2012-07-24 21:34 Mr.Rico 阅读 (240) | 评论 (0) 编辑
摘要:第1章 C++基础1. C++起源C的成功及广受欢迎是与UNIX操作系统密切相关。第3章 函数基础伪随机数第11章 名字空间1. 未命名空间文件是一个编码单元,例如类的实现文件,以及那些使用#include命令包含的文件,如类的接口文件。每个编码单元都有一个未命名的名字空间。所有在未命名空间中定义名字都局限于该编码单元中,所以这些名字在该编码单元之外可以重新使用。2. 使用未命名名字空间将某个定义局限于编码单元中。3. 混淆未命名空间和全局命名空间。4. 利用未命名名字空间代替static修饰词第12章 流和文件I/O操作1. 打开文件的方式使用open函数:ifstream ins;ins. 阅读全文
posted @ 2012-07-20 09:25 Mr.Rico 阅读 (127) | 评论 (0) 编辑
摘要:这本书主要介绍的是C++标准的TR1库。对相关的库都进行了介绍。类似一个参考手册。 前言 C++ TR1库简介 元组tuple 元组的tuple的声明 2. 创建tuple对象 使用make_tuple函数来创建tuple对象,但是make_tuple并不区分对象和对象的引用,两者都会得到和对象相同 类型的成员。 TR1库中的函数模板ref和cref可以创建包含引用的tuple对象。在头文件中定义。cref告诉make_tuple所要创建的成员是对常量类型的引用。 函数模板tie可以创建tuple对象包含对参数的引用。 程序代码:make_tuple.cc View Code #include 阅读全文
posted @ 2012-07-18 13:52 Mr.Rico 阅读 (303) | 评论 (0) 编辑
摘要:条款3:使容器里对象的拷贝操作轻量而正确STL中采用的都是拷贝对象的方式如果所有这些使STL的拷贝机制听起来很疯狂,就请重新想想。是,STL进行了大量拷贝,但它通常设计为避免不必要的对象拷贝,实际上,它也被实现为避免不必要的对象拷贝。和C和C++内建容器的行为做个对比,下面的数组:Widget w[maxNumWidgets];// 建立一个大小为maxNumWidgets的Widgets数组// 默认构造每个元素即使我们一般只使用其中的一些或者我们立刻使用从某个地方获取(比如,一个文件)的值覆盖每个默认构造的值,这也得构造maxNumWidgets个Widget对象。使用STL来代替数组,你 阅读全文
posted @ 2012-07-11 23:07 Mr.Rico 阅读 (359) | 评论 (0) 编辑
摘要:第1讲 打磨工具 1. C++/CLI与C++是不同的 第2讲 阅读C++代码 1.核心语言与标准库 C++与C以及其他很多语言类似,区分核心语言与标准库。核心语言和标准库都是标准语言的一部分,不包含这二者的工具套件是不完整的。 二者的区别在于核心语言是自包含的。例如,有些类型是语言内建的,编译器对其提供内在的支持,而其他类型是通过内建类型来定义的,他们在标准库中声明,使用时需要通知编译器将其导入。 第3讲 整数表达式 第17讲 字符集 1. 单词计数:将单词限定为字母和类字母的字符 代码如下:View Code #include#include#include#includeusingnam 阅读全文
posted @ 2012-07-09 18:53 Mr.Rico 阅读 (338) | 评论 (0) 编辑
摘要:第5章 lexical_cast介绍 测试代码: View Code #include#include#includeusingnamespacestd;usingnamespaceboost;voidtest1(){intx=lexical_cast("100");longy=lexical_cast("2000");floatpai=lexical_cast("3.14159e5");doublee=lexical_cast("2.71828");cout(456);cout(0.6810)(0x10)#inc 阅读全文
posted @ 2012-07-09 00:00 Mr.Rico 阅读 (958) | 评论 (0) 编辑
摘要:第0章 导读 第1章 Boost程序库总论 1.什么是Boost 2. 如何使用Boost 3.什么是STLprot 4.开发环境 第2章 时间与日期 1. timer库 代码如下:View Code #include#includeusingnamespacestd;usingnamespaceboost;intmain(){timert;cout#include#include#include#includeusingnamespacestd;usingnamespaceboost;intmain(){vectorv(1000000);ofstreamfs("a.txt" 阅读全文
posted @ 2012-07-06 18:11 Mr.Rico 阅读 (2670) | 评论 (0) 编辑
摘要:第17章 string基本字符序列容器 string常用 的函数http://www.cplusplus.com/reference/string/string/ 第18章 stack堆栈容器堆栈是一种适配器 堆栈的实现 由于C++ STL中堆栈是不预设大小的,所以在入栈的时候就不考虑堆栈空间是否为满,均将元素压入到堆栈,从而函数没有标明入栈成功与否的返回值。stack容器函数http://www.cplusplus.com/reference/stl/stack/ 第19章 queue队列容器 queue源代码 queue容器函数http://www.... 阅读全文
posted @ 2012-06-29 18:19 Mr.Rico 阅读 (258) | 评论 (0) 编辑
摘要:第3篇 C++ STL 容器技术SGI STL代码主页:http://www.sgi.com/tech/stl/ 第6章 vector向量容器 stl_vector.h源代码vector常用的函数http://www.cplusplus.com/reference/stl/vector/ 第7章 deque双端队列容器 deque容器使用http://www.cpluspl... 阅读全文
posted @ 2012-06-29 12:52 Mr.Rico 阅读 (317) | 评论 (0) 编辑
摘要:第1章 C++编程技术1.6 显示类型转换 4种显示类型转换的原型reinterpret_cast转换: const_cast转换: static_cast转换: dynamic_cast转换: 1.7 C++中的异常处理 多个try块与catch块的对应 捕捉任意类型的异常 异常类型列表,声明不抛出异常的情况违反异常类型列表抛出异常 另一种常用异常处理方法:继续抛出异常,让调用者处... 阅读全文
posted @ 2012-06-29 11:23 Mr.Rico 阅读 (798) | 评论 (0) 编辑
摘要:第8章 仿函数(函数对象)第9章 STL算法9.1 非变动性算法string搜寻函数与STL搜寻算法的比较变动性算法排序算法几种排序算法的比较;第10章 特殊容器/容器适配器第11章 stringstring和C-string的关系第13章 以stream class来输入输出IOSTream中的一些操控器 阅读全文
posted @ 2012-06-28 00:42 Mr.Rico 阅读 (67) | 评论 (0) 编辑
摘要:第5章 STL标准模板库5.1 STL中的各个组件STL的基本观念就是将数据和操作分离。而这种将数据和算法分开对待的考虑和面向对象的思想是矛盾的。5.2 容器序列容器Sequence containers和关联式容器Assocative containers严格来说,C++标准并未定义某一种容器的具体实现,然而标准却规定了对其行为和复杂度的要求,这让库的作者没有太多变化的余地。所以实际上各个实际版本之间只是在细节上有所差异。STL中的插入迭代器测试三种迭代器的代码:#include<iostream>#include<vector>#include<list> 阅读全文
posted @ 2012-06-28 00:34 Mr.Rico 阅读 (73) | 评论 (0) 编辑
摘要:序言侯捷译序C++98标准之后,C++标准库进行了很大的扩充,STL被C++标准库。侯捷的STL三个阶段:String,IOSTREAM和Locale程序库第2章 C++及其标准程序库简介string和STL的不同设计原则,IOSTREAM库模板函数必须在头文件中以inline函数的形式来实现。这是由模板的特点所决定的。模板参数Notype Template参数 (非类型模板参数)Default Template参数(缺省模板参数)异常处理,其中涉及到stack unwinding(堆栈辗转开解)C++标准异常类别explicit禁止隐式转换的产生C++标准手册中的复杂度amortized(分 阅读全文
posted @ 2012-06-28 00:12 Mr.Rico 阅读 (123) | 评论 (0) 编辑
摘要:一、STL 概述1.1 C++标准库高级程序设计语言希望尽可能减少程序员的重复工作,因此提供了各种抽象机制降低程序复杂性。在程序设计实践中积累了许多经验和代码,充分利用这些经验和代码是降低程序复杂性的有效途径。程序设计语言必须提供代码重用的机制。一般而言有源代码级别的重用和二进制代码级别的重用两种机制,源代码级别的重用非常简单,只需要将源代码一起编译即可。但是许多时候源代码丢失或者厂商不愿意公开源代码,只有二进制代码可用,此时程许多程序设计语言提供了标准库和相应的库管序设计语言应该提供重用二进制代码的机制。理机制,通过标准库用户可以使用常用的算法和数据结构,通过库管理机制用户可以使用第三方的库 阅读全文
posted @ 2012-06-16 16:18 Mr.Rico 阅读 (3117) | 评论 (0) 编辑
摘要:第5条 一个实体应该只有一个紧凑的职责 第9调 避免进行不成熟的劣化 第14条 宁要编译时和连接时错误,也不要运行时错误 第17条 避免使用魔数 第27条 优先使用算术操作符和赋值操作符的标准形式 第28条 优先使用++和--的标准形式。优先调用前缀形式 第29条 要避免提供隐式转换 第44条 优先编写非成员非友元函数 第46条 如果提供专门的new,应该提供所有标准形式(普通,就地和不抛出) 第49条 避免在构造或析构函数中调用虚函数第50条 将基类析构函数设为公用且虚拟的,或者保护且非虚拟的 第53条 显式的启用或禁止复制 第61条 不要在头文件中定义具有链接的实体 第62条 理智地... 阅读全文
posted @ 2012-04-28 17:22 Mr.Rico 阅读 (468) | 评论 (0) 编辑
摘要:这本书应该是为那些有中级C++程序员准备 的,里边的内容都是很高级的 ,讲得很深入,需要好好的读。我现在只是简单浏览一遍,以后接触C++多了有了自己的 想法之后,可以再好好的看一下这本书。第1章抽象第2章类 第3章 句柄 第4章 继承 第5章 多重继承 第6章 考虑继承的设计 第7章 模板 第8章 模板的高级用法 第9章 重用 第10章 异常 第11章 迁移到C++ 阅读全文
posted @ 2012-04-28 15:38 Mr.Rico 阅读 (406) | 评论 (0) 编辑
摘要:条款2 多态 条款4 STL 条款5 引用是别名而非指针 条款10 常量成员函数的含义 条款11 编译器会在类中放东西 条款14 函数指针 条款15 指向类成员的指针并非指针 条款32 禁止复制 条款34 禁止或强制使用堆分配 条款36 特定类的内存分配pic14 条款42 智能指针pic15 阅读全文
posted @ 2012-04-26 15:09 Mr.Rico 阅读 (158) | 评论 (0) 编辑
摘要:林锐博士的这本书写的非常的好,很多知识点都讲得非常透彻。是学习C++必须看的一本书。第3章 程序的基本概念1. 语言中的I/O接口pic1 2. 语言的实现pic2,3 3. 程序库pic4 4. 开发环境pic5 第4章 C/C++程序入门1. 启动函数mainpic'6,7 2.编译时与运行时pic8 3. 编译单元与独立编译pic9 4. C与C++中NULL的不同pic10 5. C中in... 阅读全文
posted @ 2012-04-19 23:35 Mr.Rico 阅读 (711) | 评论 (0) 编辑
摘要:个人觉得这本书特别不错,它讲了一些C++中容易被忽视的设计陷阱。我觉得这本书还是挺深的感觉,如果对C++不熟悉的话,里边的东西可能很难搞懂。我也是只看了前5章,后面的内容比较高级了,有些内容不好理解。强烈对C++有基础的IT同仁可以好好看看,对于提高C++水平还是很有帮助的。第1章 基本问题1. 重载与默认初始化重载通常用于指出一组函数虽然具有相同的抽象含义,但实现不同。默认初始化通常是为了方便,它为函数提供了简化的接口。重载和默认参数初始化是不同的语言功能,它们具有不同的使用目的和行为。要仔细区分。 2. 误解引用 3.无法区分访问和可见性 4. C++中被误用的语法 5. C++中空指针的 阅读全文
posted @ 2012-04-19 21:21 Mr.Rico 阅读 (607) | 评论 (0) 编辑
摘要:这本书是C++创始人写的一本书,主要介绍了C++语言的演化过程,包括C++中的众多各种特征是如何引入进来的,包括为什么要在C语言上而不是其他语言上进行改进。看了很多C++的基础书籍之后可以考虑看看这个,因为可以让你了解事情的原委。前言 引言 C++时间表 程序设计语言 第1章 C++史前时代1.simula与 分布式系统 2. C与系统程序设计除了C语言的特殊语言技术细节之外,其中有关系统程序设计语言的普遍性思想对C++的成长至少也产生了同样深刻的影响。 第2章 带类的C1. 抽象机制,通用性语言 2. 效率问题pic4 3. C中的低级操作 4. 带类的C特征概览 5. 链接类型 6. 朴实 阅读全文
posted @ 2012-04-14 22:11 Mr.Rico 阅读 (1730) | 评论 (0) 编辑
摘要:这本书的内容很多,包括了C语言和C++语言。C语言的介绍还算详细,例子也很详细。因为之前看了很多关于C的书了,所以这儿很多内容都略过了。第1章 计算机、Internet和万维网导论1. 著名的高级语言 2. Java语言 3. Basic语言 4. 摘要 第5章函数1. 随机数 2. register存储类型 3.标识符作用域的规定 4. 位域 阅读全文
posted @ 2012-04-12 21:23 Mr.Rico 阅读 (183) | 评论 (0) 编辑
摘要:《C++编程思想:第2卷》主要是介绍的标准C++中一些比较高级的功能,包括异常处理,模板,标准库算法,容器,运行时类型信息RTTI。最后还包括两部分,设计模式和并发。这两部分是挺好的。但是,我现在对设计模式和并发也了解的不多,所以,现在是这两部分略过先,等以后有时间再回过头来学习设计模式和并发。第1章 异常处理1. C语言中 的异常处理 2. 什么时候不使用异常规格说明 3. 异常安全 4. 不要让析构函数抛出异常 5. 异常开销 第2章 防御性编程第3章 深入理解字符串1. 字符串内部是什么 第4章 输入输出流1. 按行输入文本 第5章 深入理解模板1. 模板元编程 2. 编译时编程 编译时 阅读全文
posted @ 2012-04-11 13:28 Mr.Rico 阅读 (389) | 评论 (0) 编辑
摘要:开始读这本书的前两章,给我的感觉就是这本书没有像大家说的那么好的,说实话,很差,等到了大约第5章以后,特别是后面,我觉得这本书确实非常的好。它对一些重点给出了很好的剖析。但是我觉得这本书不适合入门,适合你了解C++,然后进行查缺补漏,对一些知识点更深入的了解。入门还得《C++ primer》。C++编程思想:第1卷第1章 1. 动态绑定 2. 为什么C++会成功 3. C++的效率 第2章 对象的创建与使用1. 解释器 2. 编译器 3. 静态类型检查 4. 秘密的附加模块 第3章 C++中的C1. C++显示类型转换 第5章 隐藏实现1. C++是混合产品,非纯面向对象语言 2. 减少重复编 阅读全文
posted @ 2012-04-10 23:33 Mr.Rico 阅读 (1735) | 评论 (0) 编辑
摘要:《C++程序设计原理与实践》这本书是C++之父写的一本书。这本书主要是通过一个例 子,桌面计算器,来展示程序设计的过程。桌面计算器的例子是一步来完成的,先完成一个小的原型,然后再不断的改进功能。这本书的讲解非常的详细,讲的的例 子非常的浅显易懂。但是,如果要读这本书的话,最好还是要有一定的C++基础,因为这本书并不是直接来讲解C++的语法,而更注重的是利用C++进行程序 设计。"这应该是你学习C++的'第二本书'"。这本书非常值得仔细的读。1. 为什么变量在使用之前要先声明? 2.输入输出流 3. 一个显示模型 第13章 图形类第14章 设计图形类第15章 阅读全文
posted @ 2012-04-10 20:46 Mr.Rico 阅读 (394) | 评论 (1) 编辑
摘要:第27章 C语言1. C与C++ 2. C与C++的兼容性 3. C不支持的C++特性 4. C中函数与C++的区别:不支持函数重载 5. 函数参数检查 6. 函数定义 7. 在C++中调用C和在C中调用C++ 8. 函数指针 View Code /*////ThisisexamplecodefromChapter27.2.4"Pointerstofunctions"of//"Programming--PrinciplesandPracticeUsingC++"byBjarneStroustrup//*//*-------------... 阅读全文
posted @ 2012-04-10 17:46 Mr.Rico 阅读 (976) | 评论 (0) 编辑
摘要:这儿是本书第6/7章的所有内容,之所以将这两章的内容都添加上来是因为这儿介绍的编写桌面计算器的例子很详细。整个过程非常的好。1.0 可以完成简单的表达式的计算View Code #include<iostream>#include<string>#include<stdexcept>usingstd::string;usingstd::cout;usingstd::cin;usingstd::endl;usingstd::cerr;usingstd::runtime_error;usingstd::exception;inlinevoiderror(cons 阅读全文
posted @ 2012-04-10 14:46 Mr.Rico 阅读 (456) | 评论 (0) 编辑
摘要:C++术语—MakeWong巨献快速入门 变量和基本类型 标准库类型 数组和指针 表达式 语句 函数 标准IO库 顺序容器 关联容器 泛型算法 类 复制控制 重载操作符与转换 面向对象编程 模板和泛型编程 用于大型程序的工具 特殊工具与技术 阅读全文
posted @ 2012-04-09 19:09 Mr.Rico 阅读 (572) | 评论 (0) 编辑
摘要:C++ 程序设计语言(特别版),这本书800多页,讲得很详细。因为是C++的创立者所写,所以对于里边的很多C++特征的来历都给出的介绍。非常值得一读。分为3部分,第一部分是C++的C子集,第2部分是C++中的面向对象程序设计,第3部分就是C++的标准库,还有一部分是介绍如何使用C++进行项目开发。第1章 导论1. C++设计 2. C++ 效率与结构 第2章 C++概览1.虚函数 2. 附言 第5章 指针数组和结构1. 引用引用的主要用途就是为了描述函数的参数和返回值,特别是为了运算符的重载。 2.void*指针 第7章函数1.函数重载,匹配规则 第9章 文件1.单一定... 阅读全文
posted @ 2012-04-09 17:26 Mr.Rico 阅读 (585) | 评论 (0) 编辑
摘要:这本书不是针对初学者的,这本书主要是讲解如何使用一些现成的类库,主要是C++标准库和Boost库第1章 创建C++应用程序1. 编译,链接,静/动态库 2.编译器 3. GNU编译器集(GCC) 4.Visual C++ 5.intel编译器 6. Metrowerks编译器 7.Borland编译器 8. Comeau 编译器 9.Digital Mars 编译器 10. Cygwin与MinGW 11. 编译链接命令 12. 动态链接库 第2章 代码结构2.2 保证一个跨多个源文件的变量只有一个实例存在使用extern2.3 使用向前的类声明来减少#include的使用使用前向类声明,可. 阅读全文
posted @ 2012-04-08 21:43 Mr.Rico 阅读 (612) | 评论 (0) 编辑
摘要:这本书确实不错,非常推荐看一看。第1章 预备知识1. C++ 简史Pascal语言是1968年推出的,C是1969年推出的。这两种语言都是结构化编程的典范。2. C++与通用编程 3. C++起源 4. 可移植性与标准 第2章 开始学习C++1. 变量声明 2. 使用库函数头文件的作用是提供函数原型,这样程序就能够编译生成正确的目标文件,这样在链接的时候才有可能连接到正确的文件,但是有时链接器却无法找到正确的链接路径,这就需要给出具体的搜索路径了。例如:在linux中,对于标准的输入输出函数是在libc.a库中,链接器会自动找到并链接,但是对于数学库它不是标准库组成部分,在libm... 阅读全文
posted @ 2012-04-06 20:38 Mr.Rico 阅读 (1649) | 评论 (0) 编辑
摘要:这是《C++大学教程》的第5版。之前看的第2版的电子版质量比较差,后来搜索了一下,找到了第5版,这一版比较清晰。该书已经出到了第8版,网上有第8版英文版。这本书讲的很细。初学者可以好好的看看第5版。大致浏览了一下,摘录了一些内容: 阅读全文
posted @ 2012-04-05 22:03 Mr.Rico 阅读 (213) | 评论 (0) 编辑
摘要:这是《C++大学教程》第2版的一些记录。第二版显得比较旧,具体时间我没有查到,从其中的内容看来应该是C++标准推出之前。1. C++中获取随机数srand函数只要在程序中调用一次即可得到所需要的随机化结果,多次调用是多余的,会降低程序性能。 由rand函数直接产生的值总是取值为:0<<rand()<<RAND_MAX常见错误:用srand函数代替rand函数产生随机数是个语法错误,因为srand函数不返回值。 2. C++中的存储类C++提供了4个存储类说明符:auto,register,extern和static。标识符的存储类说明符可以确定其存储、范围和连接。标识符 阅读全文
posted @ 2012-04-05 15:03 Mr.Rico 阅读 (650) | 评论 (0) 编辑
摘要:网上找到的一个介绍C语言函数库的文件。介绍了C标准中的常用 函数。并且给出了每一个函数是简单用法示例。 阅读全文
posted @ 2012-04-01 21:06 Mr.Rico 阅读 (138) | 评论 (0) 编辑
摘要:这本书主要介绍的C语言的标准,以C89为住,C99中的不同特别标出。并且也指出了C++与C之间的不同。还是值得好好看一看的。今天粗略的过了一遍,下面是一些对我比较有用的部分。 阅读全文
posted @ 2012-04-01 19:51 Mr.Rico 阅读 (245) | 评论 (0) 编辑
摘要:读完这本书之后感觉这本书还是不错的。这本书一个很大的特点就是为我们理清C与C++之间的区别。我觉得这一点很重要,很多C++类 的图书经常就是把C和C++混在一起讲,然后导致读者对C与C++之间的差异不清晰,以为C++是完全包括C的。这本书的一个缺点是内容有些老了。之前我也看过C++ Primer。曾经很多次都想学习C++,每次开始学的时候都是从C++ primer开始。然后就产生了一种想法是,基本上所有的C++书籍都是千篇一律,没有差别。前一段时间,我终于坚持把C++ primer看完,感觉学到了很多。现在又看了一些其他的C++书籍,发现,C++ Primer讲得真的很不错。原来以为C++书籍 阅读全文
posted @ 2012-04-01 11:30 Mr.Rico 阅读 (893) | 评论 (0) 编辑
摘要:这本书中列出了31章共1500个知识点,带有很多的例子。本书适合对C/C++有一些了解的程序员进行查缺补漏。因为这里边对知识点的讲解比较凌乱不是很条理,前面的内容有时就用到了后面内容,如果你不是了解的话,读起来就比较困难了。本书还有一个很大的特点是很多地方是针对Dos 平台的,我是使用的linux,所以有很多地方是不适合的。即便是对于windows 平台,有些地方可能也不适用了。因为这本书还是比较老的。有些不需要的地方可以跳过。关于C++的介绍,如果你是刚刚学C++话还是要先读《C++ Primer》,那本书比较条理,可以让你理清关系。了解各个知识点。书最后的关于Windows编程的部分我基本 阅读全文
posted @ 2012-03-30 16:49 Mr.Rico 阅读 (1310) | 评论 (0) 编辑
摘要:C++ Primer v3前两天看完了《C++ primer》的第4版,今天刚看完第3版。第3版看得比较粗略。总的感觉是第4版显得比较条理,第3版的细节比较分散。第4版中将很多应该注意的知识点都重点强调了一下,从第3版不好区分哪些比较重点。 第一章 C++概述1. 编译C++程序时,编译器自动定义了一个预处理器名字__cplusplus.在编译标准C时,编译器自动定义宏__STDC__。当然,__cplusplus和__STDC__不能被同时定义第二章 C++浏览1. C++中的数组在内置数据类型与标准库类的类型之间是复合类型(compound type)特别是指针和数... 阅读全文
posted @ 2012-03-10 18:17 Mr.Rico 阅读 (179) | 评论 (0) 编辑
摘要:第15章 面向对象编程 面向对象中的三个基本概念:数据抽象,继承和动态绑定。 C++中利用类进行数据抽象,用类派生从一个类继承另一个类。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。 1. 多态性 面向对象的关键思想是多态性。在C++中,多态性仅用于通过继承而相关联的类型的引用或指针。 2. 继承 在C++中,基类必须指出希望派生类重定义哪些函数,定义为virtual的函数是基类期待派生类重新定义的。而那些基类希望派生类继承的函数不能定义为虚函数。 除了构造函数之外,任意非static成员函数都可以是虚函数。并且,保留字virtural只在类内部的成员函数... 阅读全文
posted @ 2012-03-05 00:07 Mr.Rico 阅读 (627) | 评论 (0) 编辑
摘要:第12章 类1. 构造函数类的构造函数一般使用一个初始化列表来初始化对象的数据成员。2. 成员函数在类内部声明成员函数是必须的,而定义成员函数则是可选的。在类内部定义的函数默认为inline。而在类外部定义的成员函数必须指明它们是在类的作用域内。成员函数有一个附加的隐含实参,将函数绑定到调用函数的对象。这个隐含的实参其实是this指针。对像的this指针并不是对象本身的组成部分,它不占对象的内存空间,在每次非static成员函数调用对象的时候,this指针作为隐藏的第一个参数由编译器传递给对象。将关键字const 加在形参表之后,就可以将成员函数声明为常量:如: double avg_pric 阅读全文
posted @ 2012-02-29 13:15 Mr.Rico 阅读 (324) | 评论 (0) 编辑
摘要:第一章 快速入门1. endl是一个操纵符,它可以刷新与设备相关联的缓冲区。第二章 变量和基本类型C++中的保留字1. 初始化和赋值是不同的。 C++中进行初始化的方法包括复制初始化和直接初始化。 在内置类型上,这两种方式基本上没有什么差别。 但是,在自定义的类类型上,还是有很大差别的,有时候只能使用直接初始化。2. 定义与声明 定义为变量分配空间,声明向程序表明变量的类型和名字。定义也是声明:当我们定义变量时,我们就声明了它的类型和名字。 比如: extern int i; 这儿是声明但是没有定义i,这儿告诉程序变量i定义在了程序的其他地方。 int i; 声明并且定义了i,这样一个操作之后 阅读全文
posted @ 2012-02-29 12:55 Mr.Rico 阅读 (531) | 评论 (0) 编辑
摘要:《C 语言深度解剖》这本书是一本“解开程序员面试笔试的秘密”的好书。作者陈正冲老师提出“以含金量勇敢挑战国内外同类书籍”,确实,这本书中的知识点都是一些在面试中常见的考点,并且很多都是我们平常不注意的点,对于我们深入理解C语言确实很有帮助。第1章关键字1.register虽然寄存器的速度非常快,但是使用register修饰符也有些限制的:register变量必须是能被CPU寄存器所接受的类型。意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度。而且register变量可能不存放在内存中,所以不能用取址运算符“&”来获取register变量的地址。2.stat 阅读全文
posted @ 2012-02-27 13:04 Mr.Rico 阅读 (1814) | 评论 (0) 编辑
摘要:第1章 C语言基础1. 概念C是很小的内核语言,并包含极少的硬件相关元素,可以说具有相当高的可移植性。比方说,C语言不提供有关文件操作或动态内存管理等语句。事实上,甚至不直接提供控制台输出和输入语句。C语言的做法是是使用扩充的标准C链接库,为各式各样的编程目的提供各种所需的函数。因为C是专门作为“系统编程”而开发的,它目前主要的用途之一就是编写”嵌入式系统程序“,这一点不会让我们感到惊讶。许多开发者把C当作可移植的,结构化的高级程序语言,以编写诸如文字处理器、数据库以及图形应用程序。第7章 函数一个源文件就是一个翻译单元。前面说过#include指令只是将文件的内容插入到#include指令. 阅读全文
posted @ 2012-02-27 09:55 Mr.Rico 阅读 (1605) | 评论 (0) 编辑
摘要:第1章 C:穿越时空的迷雾1. C语言史前阶段B 语言通过省略一些特性(如过程嵌套和一些循环结构),对BCPL语言做了 简化,并发扬了"引用数组元素相当于对指针加偏移量的引用"这个想法。B语言同时保持了BCPL语言无类型这个特点,它仅有的操作数就是机器字。 Thomposoon发明了++和--操作符,并把它加入到PDP-7的B编译器中。2. C语言的早期体验除了类型系统之外,C语言的许多其他特性是为了方便编译器设计者而建立的。主要包括(1)数组下标从0而不是从1开始。因为偏移量的概念在编译器设计者的心中已经是根深蒂固。(2)C语言的基本数据类型直接与底层硬件相对应.例如,不 阅读全文
posted @ 2012-02-26 23:03 Mr.Rico 阅读 (788) | 评论 (0) 编辑
摘要:第2章 基本概念1. 程序的执行过程经历几个阶段:首先是载入到内存中。在宿主环境中(具有操作系统的环境),这个任务由操作系统完成。那些不是存储在堆栈中的尚未初始化的变量将在这个时候得到初始值。在独立的环境中,程序的载入必须由手工安排,也可能是通过把可执行代码置入只读内存(ROM)中来完成。然后程序执行便开始。在宿主环境中,通常一个小型的启动程序与程序链接在一起,它负责处理一系列日常事务,如收集命令行参数以便使程序能够访问它们。接着,便调用main函数。现在,便开始执行程序代码。在绝大多数机器中,程序将使用一个运行时堆栈(stack),它用于存储函数的局部变量和返回地址。程序同时也可以使用静态( 阅读全文
posted @ 2012-02-26 22:35 Mr.Rico 阅读 (203) | 评论 (0) 编辑
摘要:《你必须知道的495个C语言问题》这本书中列出了495个C语言中的问题,这些问题都比较都代表性,这是真实的有人提出的问题,然后作者给出了解答。这个有对应的网站:http://c-faq-chn.sourceforge.net/ 2.12 怎样向数据文件读写结构体 使用fwrite()编写结构相对简单 fwrite(&some_struct,sizeof somestruct,1,fp); 对应的fread函数可以再把它读出来,此处fwrite受到一个结构的指针并把这个结构的内存映像作为字节流写入文件。sizeof操作符计算出结构占用的字节数。 但是这样用内存映像写出的数据文件却是不能够 阅读全文
posted @ 2012-02-26 22:30 Mr.Rico 阅读 (853) | 评论 (0) 编辑
摘要:《C程序设计-现代方法》这本C语言书是一本不错的C语言的书。其中的讲解挺有条理,并且每章后面的释疑部分真的解答了我的很多疑问。第2章 C语言基本概念1. 在某些C语言的书中,main函数的结尾使用的是exit(0),而不是return 0,二者是否一样? 当出现在main函数中时,这两种语句是完全等价的:二者都终止程序执行,并且向操作系统返回0值.2. float类型的名字是由何而来的? float是floating-point的缩写形式.有些语言中称为real类型第3章 格式化输入/输出1. 转换说明%i也可以用于读写整数,%i和%d之间的区别? 在printf格式串中使用时,二者没有区别. 阅读全文
posted @ 2012-02-26 20:56 Mr.Rico 阅读 (441) | 评论 (0) 编辑
摘要:这是阅读 《C/C++代码精髓》的记录。这本书其实更偏向于讲解C++中的相关知识。也介绍了很多C与C++的区别联系。第1章 更好的C1.简介 C++是一个混合语言,它将面向对象特征与系统编程语言混合在一起。 C语言的兼容性是C++设计的一个主要的目标,1989年Bjarne在ANSI C++委员会的主题演讲中提到,C++是“工程上的妥协”,并且必须使它“越接近C越好,但不能过度”。 C++是多范例语言:像C和Pascal一样支持过程编程,像Ada支持数据抽象和通用性(模板),像其他面向对象一样,支持继承和多态。2. 更好的CC++比C更安全,更富于表达,所以可以将它作为更好的C使用:类型安全链 阅读全文
posted @ 2012-02-26 20:21 Mr.Rico 阅读 (1991) | 评论 (0) 编辑
摘要:这是《C Primer Plus(第5版)》的一些阅读笔记,以后可以经常看看,复习一下C语言。第一章 概览1. 目标代码、可执行文件和库2. 编译器环境(1)Unix系统上所用的编译器是cc(2)Linux系统上使用gcc编译器(3)window上一般是提供的集成编程环境IDE(4)IBM PC的DOS编译器第二章 C语言概述1. 为什么不内置输入输出语句第三章 数据和C1. C语言中的数据类型 2. 数据类型的大小具体在我的linux和window平台上的结果如下:可以看到出了long double,其余的大小都是一样的。 第8章 输入输出1. 输入输出重定向第9章 函数第12 章 存储类. 阅读全文
posted @ 2012-02-23 20:14 Mr.Rico 阅读 (139) | 评论 (0) 编辑
摘要:本文是在阅读《C陷阱与缺陷》一书的时候,觉得其中对自己比较有用的部分,然后摘录出来的。这样以后可以再次的复习。对于学好C语言挺有帮助的。 第4章 链接1. 什么是链接器2. 类型检查 几个比较有用的练习题: 阅读全文
posted @ 2012-02-23 16:01 Mr.Rico 阅读 (205) | 评论 (0) 编辑