C++学习笔记
iblue_coffee
一个又菜还不承认自己菜的追梦人。
展开
-
C++primer学习笔记及作业答案之第三章
笔记3.1 命名空间的using声明using std::cout、using std::cin、using std::endl。头文件不应该包含using声明,3.2 标准库类型 string标准库string表示可变长的字符序列;拷贝初始化:使用 = 号,直接初始化:不使用 = 号;初始化string对象的方式 string s1 默认初始化,s1是一个空串...原创 2019-03-27 15:46:54 · 429 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第十五章
笔记:15.1 OOP概述面向对象程序设计的核心思想:数据抽象、继承、动态绑定。当我们使用基类的引用或指针调用一个虚函数时将发生动态绑定。(也称运行时绑定)15.2 定义基类和派生类基类通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作也是如此。派生类必须将其继承而来的成员函数中需要覆盖的那些重新声明。派生类的声明包含类名但是不包含它的派生列表。当使用基类的...原创 2019-06-05 10:30:09 · 540 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第十三章
笔记:1.拷贝、赋值和销毁重载运算符本质是函数。析构函数是类的一个成员函数,没有返回值,也不接受参数,因此它不能被重载,对于一个给定类,只有唯一一个析构函数。内置类型没有析构函数。析构函数是不能删除的成员。对于析构函数已删除的类型,不能定义该类型的变量或释放指向该类型动态分配对象的指针。拷贝构造函数和拷贝赋值运算符是分开的。2.拷贝控制和资源管理赋值运算符通常组...原创 2019-05-28 22:38:04 · 751 阅读 · 1 评论 -
C++primer学习笔记及作业答案之第十二章
笔记:12.1 动态内存与智能指针使用动态内存的三种原因:1.程序不知道自己需要使用多少对象——容器2.程序不知道所需对象的准确类型3.程序需要在多个对象间共享数据——内存泄漏:忘记delete内存。接受指针参数的智能指针构造函数是explicit的,因此必须使用直接初始化,用“=”是拷贝初始化,是不行的。永远不要用get初始化另一个智能指针或者为另一个智能指针赋值...原创 2019-05-22 20:07:25 · 677 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第十一章
笔记:11.1 关联容器类型map和multimap定义在头文件map中,set和multiset定义在头文件set中;无序容器则定义在unordered_map和unordered_set中。11.2 关联容器概述11.3 关联容器操作我们通常不对关联容器使用泛型算法。解引用关联容器的迭代器得到的是value_type的值的引用。关联容器map迭代器的类型是pair类...原创 2019-05-20 10:45:31 · 767 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第十章
笔记:1.概述迭代器令算法不依赖于容器,但算法依赖于元素类型的操作。标准库通过算法和数据结构的分离来实现泛型。算法永远不会改变底层容器的大小。2.初识泛型算法C风格字符串本质是char *类型,用==比较两个char *对象,只是检查两个指针值是否相等,即地址是否相等,而不会比较其中字符是否相同标准库算法从来不直接操作容器,它们只操作迭代器,从而间接访问容器。能不能插入...原创 2019-05-09 11:37:23 · 614 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第九章
笔记:9.1 顺序容器概述如果不确定使用哪种类型的容器,那么可以使用vector和list的公共操作,使用迭代器,不适用下标操作。list 的迭代器不支持比较运算。list不支持<运算,只支持递增递减、==以及!=操作。9.2 容器库概述每个容器都定义了一个默认构造函数。只有顺序容器(不包括array)的构造函数才能接受参数大小。当将一个容器初始化另一个容器的拷贝...原创 2019-04-23 09:05:56 · 530 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第八章
笔记:8.1 IO类IO对象无拷贝或赋值。因此不能将形参或返回类型设置为流类型,通常以引用方式传递和返回流。且不能是const的。将流的状态作为条件判断时,如while(cin >> i),当遇到了文件结束符,或者遇到了IO流错误,或者读入了无效数据时,循环便会终止。当一个输入流被关联到一个输出流时,任何试图从输入读取数据的操作都会先刷新关联的输出流。标准库将cout和...原创 2019-04-16 21:01:41 · 374 阅读 · 1 评论 -
C++primer学习笔记及作业答案之第六章
笔记:6.1 函数基础形参一定要被初始化,每个形参都是含有一个声明符的声明。函数的三个重要组成部分:函数名、参数列表、返回值。对象有生命周期。只存在于块执行期间的对象称为自动对象。建议变量和函数都在头文件中声明,在源文件中定义。6.2 参数传递顶层const可以忽略。当我们想把数组作为函数的形参时,有三种可选择的方式:一是声明为指针,二是声明为不限维度的数组,三...原创 2019-04-10 16:07:04 · 730 阅读 · 1 评论 -
C++primer学习笔记及作业答案之第四章
笔记:4.1 基础对于那些没有指定执行顺序的运算符来说,如果表达式指向并修改了同一个对象,将会引发错误并产生未定义的行为。算术运算符的运算对象和求值结果都是右值。4.2 算术运算符4.3 逻辑与关系运算符4.4 赋值运算符赋值运算符的优先级比关系运算符低,因此在条件语句中,赋值部分通常应该加上括号。赋值运算符的左侧对象必须是左值,右侧运算对象可以是左值,也可以是右值...原创 2019-03-29 14:54:11 · 748 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第七章
笔记:7.1 定义抽象数据类型类的基本思想是:数据抽象和封装。成员函数的声明在类的内部,定义则既可以在类的内部也可以在类的外部。7.2 访问控制与封装class定义的类,是希望所有成员是public,struct定义的类,是希望所有成员是private。7.5 构造函数在探使用explicit的优点是避免因隐式转换而带来的意想不到的错误,缺点是用户的确需要这样的类类型转...原创 2019-04-16 08:55:33 · 692 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第五章
笔记:5.1 简单语句复合语句也叫做块。5.2 语句作用域5.3 条件语句就C++而言,规定else与离它最近的尚未匹配的if匹配,可以使用花括号控制行经路径。课后习题:练习 5.1:什么是空语句?什么时候会用到空语句?答:空语句是最简单的语句,空语句由一个单独的分号构成。如果在程序的某个地方语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。一种常...原创 2019-04-02 11:47:45 · 383 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第一章
课后习题:练习1.1: 查阅你使用的编译器的文档,确定它所使用的文件命名约定,编译并运行main程序。我使用的编译器为visio studio2013 读者使用其他的编译器也是可以的只要能支持 c++11即可。//练习1.1int main(){ return 0;}练习1.2:改写程序,让它返回-1,返回-1通常被当作程序错误的标识。重新编译运行你的程序,观察你的...原创 2019-03-18 16:38:47 · 486 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第二章
笔记:string表示的是一种可变长字符序列的数据类型;对象:一块能存储数据并具有某种类型的内存空间,变量是命名了的对象。初始化和赋值是两个完全不同的操作。初始化不是赋值, 初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。2.2 变量变量申明规定了变量的类型和名字,而定义还申请存储空间,也可能会为变量赋一个初始值;如果想申明...原创 2019-03-21 16:56:24 · 636 阅读 · 0 评论 -
C++primer学习笔记及作业答案之第十四章
笔记:14.1 基本概念当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的(显示)参数数量比运算对象的数量少一个。逻辑与运算符、逻辑或运算符和逗号运算符以及&&、||运算符,这些运算符的重载版本无法保留求值顺序和/或短路求值属性,因此不建议重载它们。一般不重载逗号运算符和取地址运算符。赋值运算符和符合赋值运算符则应该返回左侧运算对象的一...原创 2019-05-30 17:35:42 · 475 阅读 · 0 评论