【C++ Primer】学习草稿
行而尚学
一步一步 迈向未来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
5.1 - 5.12 表达式
本章大意介绍了表达式以及操作符相关的一些基本定义,如优先级,结合性,类型转换,以及一些操作符的具体含义。说明这部分属于面向过程部分,已有了基本掌握,故不做细节摘录以及课后习题。将精力放在后面的学习上。原创 2013-05-02 15:26:55 · 442 阅读 · 0 评论 -
2.6 typedef名字
本节大意:介绍了typedef关键字。细节摘录:1. 其目的在于给已经存在了的数据类型定义同义词课后习题:无原创 2013-04-22 09:07:28 · 368 阅读 · 0 评论 -
2.5 引用
本节大意:介绍了引用的相关知识。细节摘录:1. 引用就是变量的别名。2. 非const引用必须要用相应对象的变量名初始化。3. const引用则可以用右值。课后习题:较为简单 略过。原创 2013-04-22 09:04:53 · 392 阅读 · 0 评论 -
2.4 const限定符
本节大意:const关键字的说明。细节摘录:1. const变量必须先初始化。2. 全局const变量默认为局部,非const变量默认为全局。课后习题:1. 100应当用一个常变量来表示,否则会成为魔数。2. a不对没有初始化,因为常变量不可改动,因此必须在定义的时候给出初始化式子。 b.合法 c.不合法,sz是不能够自加的。原创 2013-04-22 08:55:56 · 364 阅读 · 0 评论 -
2.3 变量
本节大意:讲述了如何定义并使用一个变量,变量的命名规范,初始化的方法,变量的声明与定义,变量的作用域。细节摘录:1. 变量定义:可以操作的有名字的存储区。2. 区分两种初始化方法 -- 赋值初始化和直接初始化。3. 定义用于给变量分配空间,声明向程序表明变量的名字和类型。定义一定是声明,但声明不一定是定义(仅当声明式有右值它同时具有定义效果)。在多个文件中使用的变量,其原创 2013-04-19 16:36:10 · 404 阅读 · 0 评论 -
2.1 基本内置类型
本节大意:介绍了几种数据类型以及它们在机器中的表示,范围,溢出处理。细节摘录:1. C++类型标准只规定了所用空间的最小值,事实上每种实现都比这个要求更大。2. 整型溢出后采用取摸截取处理。3. 浮点型一般用double类型。课后习题:1. 表示范围不同,一般来说满足short 2. 一个表示有符号的整数,一个表示无符号的整数。前者的表示范围将近是后者2倍。原创 2013-04-19 09:55:14 · 432 阅读 · 0 评论 -
1.4 控制结构
本节大意:介绍了几种控制结构,while,for,if,以及自增,自减运算符,进一步丰富了之前的例子程序。细节摘录:1. 需要读入未知数目的输入时,可以用如下语句“ while (std::cin >> 变量名) "。课后习题:均为面向过程的经典编程题,用好控制结构易得答案,略过。原创 2013-04-18 16:57:42 · 360 阅读 · 0 评论 -
1.3 关于注释
本节大意:介绍几种经典的注释方法,以及指出容易出现的问题。细节摘录:1. 不要嵌套注释。课后习题:1. 下面是个有嵌套注释的代码:可以看出编辑器给出了警告。当执行编译时,报错如下:2. 根据注释对一定是以/*开始,以*/结尾原则,不难得出只有2是合法的。原创 2013-04-18 16:44:25 · 386 阅读 · 0 评论 -
1.1 编写简单的C++程序
本节大意讲解了一个基本框架程序,并分析了程序编译相关的一些约定。这些约定有源文件的命名规范,命令行编译程序的方法,以及如何取得程序的返回值。细节摘录1. 源文件文件名的后缀不但表示该文件是程序源文件,而且也表示该源文件是用什么语言编写的。但具体命名细则依赖于具体的编译器。2. 用命令行编译程序的方法对于不同操作系统,不同编译器来讲,方法也是不同的。3. Linux/Unix下取原创 2013-04-15 09:45:29 · 505 阅读 · 0 评论 -
3.2 标准库string类型
本章大意讲述了标准库string类型的相关知识细节摘录1. 存储string的size操作结果的变量必须为string::size_type,不要给int。课后习题1. 默认构造函数是指让构造一个对象且并不给出参数时系统自动执行的构造函数。2. 经典的三种赋值方法如下:3.s和s2的值均为空4. 每次读取一行的代码:每次读取一个单词的代码:原创 2013-04-23 10:25:04 · 415 阅读 · 0 评论 -
15.6
本节大意介绍了继承关系类对象存放于容器中的一些问题细节摘录1. 对象并不具有多态性(其引用或者指针才有)2. 派生类对象塞进容器后只有基类那部分存在,其他被切掉。3. 唯一可行的方法是放指针,但是就会带来一系列的指针管理问题。课后习题1. 2. 略3. 没有差异。原创 2013-06-05 16:01:52 · 387 阅读 · 0 评论 -
15.5
本节大意分析了派生类中的一些名字冲突问题细节摘录1. 名字如果相同 派生类会屏蔽掉基类。如果要用基类版的必须显示调用。2. 派生类函数如果要重载基类中的函数,则所有的基类函数都要被重载一边(可以用using关键字提高效率)。课后习题1. 一个是动态绑定指针 一个是复制函数的作用2. a错 只有返回值可以为派生类引用 b对 cd都是错的,覆盖了基类的虚函数。原创 2013-06-05 15:25:05 · 416 阅读 · 0 评论 -
15.4
本节大意面向对象编程中的构造函数和复制控制细节摘录1. 如果某些类只希望派生类使用某个构造函数,可将其声明为protected。2. 一个类的构造函数中只能初始化它的直接基类。3. 当类发生重构,所有使用这些类的代码都要重新编译。4. 请尊重基类接口,用基类的构造函数初始化基类。5. 有指针成员的类要添加复制控制机制(3 rule)6. 正如我们在派生类中调用基原创 2013-06-03 16:28:27 · 432 阅读 · 0 评论 -
15,1
本节大意介绍了面向对象编程基本思想细节摘录1. 面向对象的两个灵魂概念继承,动态绑定。2. 通过继承而相关联的类型为多态类型,许多情况下可以交换的使用派生类或基类的多种形态。3. 我们能够编写程序(函数)使用继承层次中任意类型的对象,无需关心对象的具体类型。4. 动态绑定两点要求1 用引用或者指针做参数 2. 被调用的函数是虚函数课后习题无原创 2013-05-30 10:08:25 · 420 阅读 · 0 评论 -
2.7 枚举
本节大意:介绍了枚举类型。细节摘录:1. 枚举成员值可以不唯一。2. 不能改变枚举成员的值。3. 每一个enum就定义了一个新的类型。课后习题:无原创 2013-04-22 09:13:51 · 419 阅读 · 0 评论 -
2.8 类类型
本节大意:介绍了类类型的基本框架。细节摘录:1. 类变量的定义区别于一般变量,它是在构造函数里实现初始化而不是声明时。2. struct和class的区别仅仅在于默认变量的访问级别是否为私有。课后习题:1. 反馈很好懂:2. 对于变量来讲private型只能被类的内部函数访问,而public型则可以被其他类自由进行调用。原创 2013-04-22 09:23:23 · 365 阅读 · 0 评论 -
2.9 编写自己的头文件
本节介绍:C++中的头文件思想,多文件编程的思想及其内容分配格局。细节摘录:1. const变量和内联函数也可以放在头文件中2. 头文件保护符格式:课后习题:1. ab是定义 cd是声明2. a放源文件中,b放头文件中,c放源文件中,d放头文件中。原创 2013-04-22 09:51:54 · 475 阅读 · 0 评论 -
4.4 多维数组
本节大意讲述了多维数组的相关知识细节摘录无课后习题略原创 2013-04-26 09:30:43 · 361 阅读 · 0 评论 -
4.2 指针的引入
本节大意回顾了C语言中指针的相关知识细节摘录1. C++使用迭代器替代指针,使用string类型取代C风格字符串。2. 指针和引用的区别:a. 指针可以为空,但引用永远指向某个对象 b. 引用一经初始化,就必须始终指向某个对象。3. 指针减法操作的结果的类型是ptrdiff_t。4. 指针和数组具有很大的相似性5. 区分常量指针和指向常量的指针课后习题略原创 2013-04-26 08:51:55 · 466 阅读 · 0 评论 -
6.1 - 6.14 语句
本章大意学习C++中的各种流程控制语句细节摘录1. 异常处理机制2. 使用预处理器进行调试说明面向过程部分,不做过多纠结。原创 2013-05-02 16:17:42 · 355 阅读 · 0 评论 -
4.3 C风格字符串
本节大意对比讲述了C和C++中字符串的处理细节摘录1. C++中new和delete的语法格式2. c_str函数可以将string转换成C风格字符串(但是是常量型)3. 用数组初始化vector的方法要掌握课后习题这部分略原创 2013-04-26 09:17:54 · 432 阅读 · 0 评论 -
8.1 - 8.5 标准IO库
本章大意介绍了标准IO库即其相关的使用细节摘录0. 简单的IO控制流层次1. 复制,赋值均不能够为IO对象2. 三种刷新缓冲区的方法 a flush ends endl操纵符 b unitbuf操纵符 c 将输入和输出绑定在一起3. 文件输入输出标准步骤4. 按模式打开文件5. 字符串IO库课后习题1. 往文件,字符串中写入数据。2. 形参和原创 2013-05-06 10:54:59 · 433 阅读 · 0 评论 -
7.1 - 7.9 函数
本章大意主要讲解了C++中关于函数的各项机制细节摘录1. 使用引用型参数的原因:a 复制太占空间 b 需要修改实参2. 接1,如果目的在于a,那么最好声明为const3. 主函数带参格式int main(int argc, char ** argv) {...}4. 不可返回局部对象的引用或者指向局部对象的指针5. 内联函数要放在头文件里6. const成员函数原创 2013-05-06 09:49:47 · 404 阅读 · 0 评论 -
3.5 标准库bitset类型
本节大意介绍了位容器bitset细节摘录1. 如果用string类型初始化bitset,那么转化方向是相反的。课后习题1. 64位的32的二进制式子2. 32位的1010101(高位补0)3. 8位的字符串二进制式子(转化方向相反)4. 不会做原创 2013-04-25 09:23:12 · 394 阅读 · 0 评论 -
3.4 迭代器简介
本节大意介绍了C++中迭代器以及其基本使用细节摘录1. 迭代器的解引用操作结果为左值2. 任何改变迭代器长度的操作都会使迭代器失效课后习题1. 略2.3. 实现代码:#include #include using namespace std;int main(){ vector v(10); int i=0; for (vector:原创 2013-04-25 09:01:11 · 504 阅读 · 0 评论 -
3.3 标准库vector类型
本节大意介绍了标准库类型vector细节摘录1. 几种不同的初始化方式要掌握2. 有些函数应该动态调用3. 谨慎对待下标操作(一定要确定下标对应元素存在)课后习题1. a合法 b不合法 c合法2. 0 1 10 0 1 103.4. 过于复杂暂不完成5. 不合法的,因为使用了本不存在的元素的下标。6. 最好就是vector (10, 42)原创 2013-04-24 09:49:40 · 383 阅读 · 0 评论 -
4.1 数组
本节大意回顾了C语言中的数组的使用方法并和vector进行了系统的对比细节摘录无课后习题1. 几种情况都很极端,不会判断。2. 前两组是空的,后两组是未定以的。3. bcd都是错的4. 略5. 主要是下标难以约束,容易造成缓冲区溢出,而且一些操作也比较不够人性化(比如不能两个数组直接赋值)。6. 错在序号错位了7. 数组实现很简单,vector实原创 2013-04-25 15:50:01 · 438 阅读 · 0 评论 -
3.1 命名空间的using声明
本节大意讲述了关键字using的使用细节摘录1. 一个using声明一次只能作用于一个命名空间,但一个源代码文件中可以使用多个using声明。2. 头文件中不要using了。课后习题1. 改写代码:原创 2013-04-23 09:10:25 · 460 阅读 · 0 评论 -
2.2 字面值常量
本节大意:介绍了C++中几种主要内置类型【字面值】的表示方法。细节摘录:1. 06表示八进制的6,0x6表示16进制的6。(数字0)。2. 浮点型的字面表示比较多且复杂。3. 使用“ \ ”来实现多行字面值时,要注意反斜线必须是该行的尾字符,而且后继行行首的任何字符(包括空格制表符)都将成为该多行字面值的一部分。课后习题:略,均为考察字符,整型,浮点型的字面值表原创 2013-04-19 10:08:59 · 442 阅读 · 0 评论 -
1.5 类的简介
本节大意:在原来程序的基础之上,引入了类,真正开始了C++编程。大致介绍了类的结构,并用类的思路对原来程序进行了改造,使之成为真正的C++风格程序。细节摘录:1. C++设计的主要焦点就在于使所定义的类使用起来和内置类型一样自然,一切特性和技术似乎都是围绕着这个目的展开的。课后习题:1. 使用自定义头文件;使用类;读入未知数目对象。 代码:执行测试:2.原创 2013-04-19 09:31:53 · 385 阅读 · 0 评论 -
1.2 初窥输入输出
本节大意:对上节的程序进行了扩展,增加了头文件和输入输出功能。使例子程序像真正的C++程序靠拢。细节摘录:1. C++用“流”的思想处理输入输出,“流”是指要从某种设备上读出或写入的字符序列。2. 可以连续使用>的理论依据 -- 输入输出操作的返回是流本身。3. endl叫做操纵符,除了可以换行,还有刷新缓冲区的功能。4. 定义变量前一定要初始化。课后习题1原创 2013-04-18 16:35:12 · 459 阅读 · 0 评论 -
15.2
本节大意介绍了一些基类,派生类之间的关系机制。细节摘录1. 除了构造函数,所有函数都可以声明为虚。2. virtual关键字只能在内部声明中出现。外部定义时就不要出现了。3. protected能让子类访问基类,反过来不成立。4 派生类的虚函数声明必须和基类一致。只有一种情况例外,见P477.5. 一旦函数被声明为虚函数,它就永远都是。6. 用作基类的类必须是已原创 2013-05-30 10:55:05 · 424 阅读 · 0 评论 -
11.2
本节大意较为详细的介绍了几种具体的算法细节摘录1. 使用算法记得包含头文件(主要有两种)2. 使用插入迭代器记得加头文件名3. 通常,参数迭代器要加上参数。课后习题1. #include #include #include #include #include using namespace std;int main(){ vector原创 2013-05-16 11:08:28 · 383 阅读 · 0 评论 -
12.6
本节大意介绍了面向对象编程中的static机制细节摘录1. 使用static的好处:a 避免和其他全局事物产生命名冲突 b 封装性 c 可读性2. 访问方式 类::static对象名3. static函数的限制 a 成员不能用this b 不能声明为const,也没必要声明。 c 不能声明为虚函数4. static数据成员必须在类的外部定义一次且只能定义一次5.原创 2013-05-23 21:45:30 · 485 阅读 · 0 评论 -
13.1
本节总结介绍了复制构造函数的使用方法以及需要使用的情况细节摘录1. 复制情况下,操作过程是系统先创建一个临时对象(使用构造函数),然后再用复制构造函数复制到左边。2. 如果要使用复制构造函数,那么构造函数就不能声明为explicit3. 函数,容器,数组中都涉及到了复制函数机制。4. 两种情况下一般要用到复制函数:1.有成员是指针 2. 复制时要做一些特定工作5.原创 2013-05-24 11:28:31 · 386 阅读 · 0 评论 -
9.3
本节大意本节是一个大节,详细讲述了各种顺序容器的使用。细节摘录1. begin和end放回值最好不要存放,因为一旦进行插入或者删除操作,它们就将作废。2. 课后习题1. 不会,暂留。2. list::value_type3. 增加一个标识符即可4. 题目有问题5. 不用判断了,肯定不同。因为类型都不同。事实上编译都不能通过。6. 容器类型一定要相原创 2013-05-10 10:02:37 · 384 阅读 · 0 评论 -
9.2
本节大意介绍了迭代器的基本使用,以及关于其范围的讨论。细节摘录1. 算数和关系运算符是vector和deque容器所特有的。2. 迭代器范围的末端是最后一个元素的下一个元素,而不是最后一个元素。3. 要特别小心使迭代器失效的操作。课后习题1. 错在list容器的迭代器不支持比较操作。2. 判断容器是否为空。3. #include #include原创 2013-05-09 14:55:14 · 374 阅读 · 0 评论 -
12.5
本节大意介绍了一种重要的机制 - 友元细节摘录1. 重载函数集中,每个希望“友”的函数都要声明为友。|课后习题1. 能够访问某个类的函数就叫做该类的友元函数,类同理。2. 目前还没遇到过3. #include #include using namespace std;class A {private: int a;public: A(int原创 2013-05-22 11:00:00 · 421 阅读 · 0 评论 -
10.1
内容大意介绍了类型pair并介绍了它的使用。细节摘录1. 该类型包含于utility头文件中。课后习题1. #include #include #include #include using namespace std;int main(){ pair temp; string a; int b; vector > v; while (ci原创 2013-05-13 08:41:21 · 389 阅读 · 0 评论 -
9.1
本节大意掌握容器的定义,还有各种初始化的方法。细节摘录1. 容器的本质是类模板,故定义的语法都很像。2. 使用容器初始化时,类型必须相同;而使用迭代器时,可以不同。3. 指针可以视作迭代器,带入初始化结构式。4. 以接受容器大小为参数的初始化式只能用于顺序容器。5. 容器的元素不能是引用。6. 容器的元素是类时,如果类没有默认构造函数,那么就不能用默认的初始化方原创 2013-05-09 08:43:13 · 413 阅读 · 0 评论
分享