
C++ primer第五版学习
文章平均质量分 90
读书是学习,摘抄是整理,写作是创造
小呀小二笙
斯人若彩虹,遇上方知有~~~
展开
-
c++ primer 第五版----学习笔记(一)
由于已经学习过c++的基础课程,对于第一章节的内容就大致的过了一遍,对于以下几个不太熟悉或平常不太注意的方面又有了一些了解和掌握。1.c++注释的种类:单行注释与界定符对注释。(之前在编写代码时没有编写注释的习惯,以后一定加强!!!)单行注释:以双斜线(//)开始,以换行符结束,当前行双斜线右侧的所有内容都会被编译器忽略。注释界定符:可以放置于任何允许放置制表符、空行符或换行符的地方,...原创 2018-08-07 17:09:13 · 700 阅读 · 0 评论 -
c++ primer 第五版----学习笔记(二)
1.算术类型:字符、整型数、布尔值和浮点数;c++标准规定的尺寸的最小值:c++语言规定一个int至少和一个short一样大,一个long long至少和一个long一样大。其中数据类型long long实在c++11中新定义的。 带符号类型(signed),无符号类型(unsigned);在带符号类型名前添加unsigned就能得到无符号类型。 如何选择类型:(1)当明确知晓数值不可...原创 2018-08-13 22:00:21 · 545 阅读 · 0 评论 -
c++ primer第五版----学习笔记(三)
1.标准库类型string:初始化string对象:直接初始化与拷贝初始化string s1 = "hiya"; //拷贝初始化(使用 = 初始化变量)string s2("hiya"); //直接初始化string s3(10,'c'); //直接初始化,s3的内容是ccccccccccstring对象上的部分操作:(1)get...原创 2018-08-15 22:31:28 · 409 阅读 · 0 评论 -
c++ primer第五版-----学习笔记(四)
1.重载运算符:operator,IO库中>>和<<运算符以及string对象、vector对象和迭代器使用的运算符都是重载的运算符。2.左值与右值:左值与右值的定义在于一个赋值等号,复制等号左边成为左值,等号右边成为右值(1)左值(L-value):表示存储在计算机内存中的对象,可寻址,相当于地址值(2)右值(R-value):代表的为真实值,可读,即...原创 2018-08-16 21:49:54 · 268 阅读 · 0 评论 -
c++ primer第五版----学习笔记(五)
1.空语句:最简单的语句,只包含一个单独的分号复合语句:指用花括号括起来的语句和声明的序列,复合语句也被称为块2.if语句://语法形式:if (condition) statement//if、else语句if (condition) statementelse statement1//悬垂else:就c++而言,规定else与离它最近的尚未匹...原创 2018-08-17 16:22:36 · 907 阅读 · 0 评论 -
c++ primer第五版----学习笔记(六)
1.return语句:返回return语句中的值(如果有的话) 将控制权从被调函数移回主调函数2.局部对象:名字的作用域。是程序文本的一部分,名字在其中可见。 对象的生命周期是程序执行过程中该对象存在的一段时间(1)自动对象:只存在于块执行期间的对象(2)局部静态对象:在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止时才被销毁,在此期间即使对象所在的函数结束执行...原创 2018-08-23 18:39:46 · 353 阅读 · 0 评论 -
c++ primer第五版----学习笔记(七)
1.类的基本思想:数据抽象和封装数据抽象:一种依赖于接口和实现分离的编程技术。类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数 封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节2.关于类:定义在类内部的函数是隐式的inline函数(内联函数) this:当我们调用成员函数时,实际上实在替某个对象调用它;任何对类成...原创 2018-08-25 18:30:00 · 475 阅读 · 0 评论 -
c++ primer第五版----学习笔记(八)
1.IO类:定义在三个独立的头文件中(iostream、fstream、sstream)//头文件 类型iostream istream 从流读取数据 ostream 向流写入数据 iostream 读写流fstream ...原创 2018-08-27 21:32:07 · 344 阅读 · 0 评论 -
c++ primer第五版----学习笔记(九)
1.顺序容器概述:顺序容器类型:vector //可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除元素很慢deque //双端队列,支持快速随机访问,在头尾位置插入或删除元素很快list //双向链表,支持双向顺序访问,在list任何位置插入或删除元素都很快forward_...原创 2018-08-29 22:45:52 · 450 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十)Ⅰ
1.泛型算法:“算法”:因为它们实现了一些经典算法的公共接口 “泛型”:因为它们可以用于不同类型的元素和多种容器类型泛型算法本身不会执行容器的操作,只是运行于迭代器之上,执行迭代器的操作;算法不会改变底层容器的大小 大多数算法定义在头文件algorithm中2.初识泛型算法:(大多数标准库算法都对一个范围内的元素进行操作)只读算法:(只读取范...原创 2018-09-04 10:48:44 · 297 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十)Ⅱ
部分习题解答:10.1:#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<int> vec; int word, val = 42; cout << "input a se...原创 2018-09-04 11:30:24 · 264 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十一)Ⅰ
1.关联容器:关联容器的种类://有序关联容器:按关键字有序保存元素map //保存关键字-值对set //只保存关键字,即值multimap //关键字可重复出现的mapmultiset //关键字可重复出现的set//类型...原创 2018-09-06 23:42:02 · 276 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十一)Ⅱ
部分习题解答:11.1:vector这种顺序容器,元素在其中按顺序存储,每个元素都有唯一对应的位置编号,所有操作都是按编号进行的。例如,获取元素,插入删除元素,遍历元素。底层的数据结构是数组、链表,简单但能保证上述操作的高效。对于依赖值的元素访问,例如查找给定值,在这种数据结构上的实现是要通过遍历完成的,效率不佳。而map这种关联容器,就是为了高效实现“按值访问元素”这类操作而设计的。为...原创 2018-09-07 13:24:29 · 337 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十二)Ⅰ
知识点:全局变量:程序启动时分配,结束时销毁;局部自动对象:进入其定义所在块时分配,离开块时销毁;局部static对象:第一次使用前分配,程序结束时销毁 静态内存:保存static对象、类static数据成员、定义在函数之外的变量;栈内存:保存定义在函数内的非static对象; 内存池:被称作自由空间或堆。程序用堆来存储动态分配的对象 动态对象的生存期由程序控制,也就是说,当动态对象不再...原创 2018-09-13 21:38:49 · 407 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十二)Ⅱ
部分习题解答:12.1:StrBlob的data成员是一个指向string的vector的shared_ptr,因此StrBlob的赋值不会拷贝vector的内容,而是多个StrBlob对象共享同一个vector对象。因此经过一些列操作以后,b1和b2均包含4个string。12.2:#include <iostream>#include <algorithm...原创 2018-09-15 00:05:18 · 321 阅读 · 1 评论 -
c++ primer第五版----学习笔记(十三)Ⅰ
知识点:拷贝控制操作:拷贝、移动、赋值和销毁在定义一个类时,我们可以显式或隐式的定义在此类型的对象拷贝、赋值、移动、销毁是做什么,主要通过五种特殊的成员函数来完成这些操作:拷贝构造函数、拷贝复制运算符、移动构造函数、移动复制运算符和析构函数1.拷贝构造函数:定义: 一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值 拷贝构造函数在几种情况下都会被隐式使用,因此拷贝...原创 2018-09-20 14:55:01 · 419 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十三)Ⅱ
部分答案解答:13.1:拷贝构造函数:一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值每个成员的类型决定了它的拷贝方式,对于类类型,将调用其拷贝构造函数进行拷贝,对于内置类型,则会直接拷贝,对于数组的拷贝是逐个元素的拷贝,若数组的元素是类类型,则使用拷贝构造函数来拷贝13.2:此为一个类的拷贝构造函数,作为函数其非引用类型的参数需要进行拷贝初始化,但拷贝初始化又要...原创 2018-09-20 21:34:08 · 226 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十四)Ⅰ
重载运算与类型转换1.重载的运算符:重载的运算符是具有特殊名字的函数:名字由关键字operator和其后要定义的运算符号共同组成 除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参 当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的(显示)参数数量要比运算对象的数量少一个 当运算符作用于内置类型的运算对象时,我们无法改变该运算符...原创 2018-09-23 23:22:06 · 248 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十四)Ⅱ
部分习题解答:14.1:不同点: 重载运算符必须具有至少一个class或枚举类型的操作数。重载运算符不保证操作数的求值顺序,例如对&&和||的重载版本不再具有“短路求值”的特性,两个操作数都要求值,而且不规定操作数的求值顺序。相同点: 对于优先级和结合性级操作数的数目都不变。14.2:class Sales_data{friend std::istre...原创 2018-09-23 23:46:52 · 323 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十五)Ⅰ
面向对象程序设计1.oop:核心思想(数据抽象、继承、动态绑定)数据抽象:将类的接口与实现分离 继承:我们可以定义与其他类相似但完全不相同的新类 动态绑定(又称运行时绑定):在运行时选择函数的版本; 当我们使用基类的引用或指针调用一个虚函数时将发生动态绑定2.基类与派生类: 定义基类:基类通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作 基类必须将它的两种成...原创 2018-10-05 11:46:34 · 286 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十五)Ⅱ
部分习题解答:15.1:虚成员即为虚函数15.2:protected受保护的成员,其派生类可以访问其成员;而private私有成员,其派生类不可以访问15.3:#ifndef QUOTE_H#define QUOTE_H#include <iostream>#include <string>using namespace std;clas...原创 2018-10-05 16:39:50 · 272 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十六)Ⅰ
模板与泛型编程面向对象编程(oop)和泛型编程都能处理在编写程序时不知道类型的情况;不同之处:oop能处理类型在程序运行之前都未知的情况,而在泛型编程中,在编译时就能获知类型了 容器、迭代器和算法都是泛型编程的例子 模板是c++泛型编程的基础 一个模板就是一个创建类或函数的蓝图或公式1.定义模板: 模板定义以关键字template开始,后跟一个模板参数列表(是一个逗号分隔的一个或...原创 2018-10-17 16:24:57 · 342 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十六)Ⅱ
部分习题解答:16.1:当调用template时,编译器使用实参的类型来确定绑定到模板参数T的类型,之后编译器利用推断出的模板参数来实例化一个特定版本的函数16.2:#ifndef COMPARE_H#define COMPARE_Htemplate <typename T>int Compare(const T &val1, const T &...原创 2018-10-17 17:40:49 · 305 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十七)Ⅰ
标准库特殊设施tuple、bitset、正则表达式以及随机数,附加的一些IO库功能:格式控制、未格式化IO和随机访问1.tuple类型:类似于pair的模板,定义在tuple头文件中 tuple支持的操作tuple<T1,T2,....原创 2018-10-27 21:32:25 · 225 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十七)Ⅱ
部分习题解答:17.1、17.2:#include <iostream>#include <tuple>#include <string>#include <vector>#include <utility>using namespace std;int main(int argc, char **argv){...原创 2018-10-27 21:37:56 · 396 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十八)Ⅰ
用于大型程序的工具:异常处理、命名空间和多重继承特殊要求:在独立开发的子系统之间协同处理错误的能力 使用各种库(可能包含独立开发的库)进行协同开发的能力 对比较复杂的应用概念建模的能力1.异常处理:异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信并作出相应的处理 异常使得我们能够将问题的检测与解决过程分离开来抛出异常通过抛出(throw)一条表达式来...原创 2018-10-31 17:22:00 · 250 阅读 · 0 评论 -
c++primer第五版----学习笔记(十八)Ⅱ
部分习题解答:18.1:(a)range_error(b)exception如果写成throw p,则抛出指针,是错误的18.2:发生异常,所在块之前的临时变量都会被销毁,v调用vector类的析构函数进行销毁,并释放相关内存;p指针会被销毁,但p指向的内存是动态分配的,所以该内存不会被销毁,输入流对象会调用ifstream类的析构函数进行销毁,最终程序被终止18.3:我们要解决的问...原创 2018-10-31 17:43:31 · 308 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十九)Ⅰ
特殊工具与技术1.控制内存分配应用程序需要重载new和delete运算符以控制内存分配1.1 重载new和delete使用一个new表达式时,实际执行了三步操作new表达式调用一个名为delete new(或者operator new[])的标准库函数编译器运行相应的构造函数初始化特定类型的对象对象被分配了空间并构造完成,返回一个指向该对象的指针使用了delete...原创 2018-11-06 20:49:25 · 1772 阅读 · 0 评论 -
c++ primer第五版----学习笔记(十九)Ⅱ
部分习题解答:19.1、19.2:#include <iostream>#include <cstdlib>using namespace std;void *operator new(size_t size){ cout << "new(size_t)" << endl; if (void *mem = malloc(siz...原创 2018-11-07 14:55:33 · 172 阅读 · 0 评论 -
C++ primer 个人学习总结
欢迎大家来访二笙的小房子,一同学习分享生活!文章目录1. 个人见解:C++2. primer学习总结2.1 第一章:开始2.2 Part1:C++基础2.3 Part2:C++标准库2.4 Part3:类设计者的工具2.5 高级主题3. future1. 个人见解:C++先来说说对C++的感觉吧,由于个人不是特别热爱学习的那种,自律性也比较差,加之上学期才刚接触C++,于是在经过一个学期的c...原创 2018-11-08 12:57:02 · 2331 阅读 · 0 评论