《C++ Primer Plus》学习
文章平均质量分 77
C++ Primer Plus学习过程的笔记,复习题答案,编程练习答案以及各个重要点
肥宝Fable
微信公众号:肥宝的实验室
超级实验室,技术黑工厂
展开
-
《C++ Primer Plus(第六版)》(1)(第二章 开始学习C++ 笔记和答案)
大学的时候都是学Java的,毕业这么多年好像都没有系统学过C++,现在决定过一遍。原创 2016-10-20 14:34:13 · 2809 阅读 · 2 评论 -
《C++ Primer Plus(第六版)》(2)(第三章 处理数据 笔记和答案)
1.数据类型的宽度,可能受到不同语言和不同操作系统的影响。C++只做了最小宽度的限制。short至少是16位int至少和short一样长long至少是32位long long至少是64位,至少和long一样长检测多少字节的代码。还是直接运行的好。猜测再多都是会错的。我的是64位windows7,Visual Studio 2013. std::cout << "int si原创 2016-11-15 20:59:37 · 2587 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(3)(第四章 复合类型 笔记)
这章既熟悉又陌生,数组在大学之后用的多,毕业之后几乎没用过了。1.不能将一个数组赋值给另一个数组。int a[5] = { 1, 2, 3, 4 };char b[4] = { 'a' };char c[10];//未初始化的字符好像经常会显示“烫烫烫烫烫”,哈哈哈哈哈哈哈哈哈哈哈int d[4];//未初始化的int经常是-858993460。百度一下:烫烫烫和屯屯屯产生自VC原创 2016-11-17 20:28:22 · 2494 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(4)(第四章 复合类型 答案1)
第四章好长,分开一下。4.12 复习题1.char actor[30] = { 0 };short betsie[100] = { 0 };float chuck[13] = { 0 };long double dipsea[64] = { 0 };2.array actor = { 0 };array betsie = { 0 };array chuck原创 2016-11-22 19:40:29 · 2595 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(5)(第四章 复合类型 答案2)
4.13 编程练习1.string firstName = "";string lastName = "";cout << "What is your first name? " ;getline(cin, firstName);cout << "What is your last name? ";getline(cin, lastName);cout << "What let原创 2016-11-22 21:28:23 · 2500 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(6)(第五章 循环和关系表达式 笔记)
====笔记========================1.要输出bool,要设置标记,默认是输出0和1的。cout.setf(ios_base::boolalpha);cout 2.每个表达式都是值,例如if(x = 100),相当于x = 100;if(x);不过我强烈要求不要这么写,容易看错,或者你觉得自己牛逼,但是看你的代码的人未必牛逼。最后还得加大自己的工作原创 2016-11-23 20:00:11 · 2306 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(7)(第五章 循环和关系表达式 答案)
5.8 复习题1. //5.8 复习题//1.入口条件就是在进入循环的时候就检测,出口条件是先进入循环,再检测,至少可以执行一次。//for、while属于入口条件检测,do while属于出口条件检测。//2. //01234{int i;for (i = 0; i cout cout };//3. //0369//12{int j原创 2016-11-25 18:11:44 · 2683 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(8)(第六章 分支语句和逻辑运算符 笔记和答案)
1.字符函数库头文件 isalnum() 字母或数字 isalpha() 字母 iscntr() 控制字符 isdigit() 数字(0-9) isgraph() 空格之外的打印字符 islower() 小写字母 isprint() 打印字符,包括空格 ispunct()原创 2016-11-26 22:41:15 · 2946 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(9)(第七章 函数 笔记和答案)
1.ANSI C是C语言的标准,任何C语言的编译器都在ANSI C的基础上扩充。ANSI C几乎不能完成任何程序的开发。TC、VC等都对ANSI C进行了扩充,加入了自己的规则和库之类的。对于函数头:void fun();在ANSI C中,意味着不指出参数,后面定义参数列表。而C++则是表示没有函数,要是想不指出参数表,应该用省略号void fun(...);原创 2016-12-05 21:04:04 · 2958 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(10)(第八章 函数探幽 笔记)
内联函数、左值和右值、模板函数、显式实例、隐式实例、显式具体、后置返回类型等。。。原创 2016-12-14 00:02:11 · 2362 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(11)(第八章 函数探幽 复习题答案)
内联函数、左值和右值、模板函数、显式实例、隐式实例、显式具体、后置返回类型、复习题答案原创 2016-12-14 20:12:38 · 2285 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(12)(第八章 函数探幽 编程题答案)
内联函数、左值和右值、模板函数、显式实例、隐式实例、显式具体、后置返回类型、编程题答案...8.8编程练习1.void printInfo(char* str, int check = 0){ static int count = 0; ++count; if (check == 0) { cout << str << endl; }原创 2016-12-15 10:44:52 · 2500 阅读 · 1 评论 -
《C++ Primer Plus(第六版)》(13)(第九章 内存模型和命名空间 笔记)
1.为了保持通用性,C++使用术语翻译单元,而不是文件,文件不是计算机组织信息时的唯一方式。2.C++允许编译器使用自己的名称修饰,因此不同的编译器编译出来的二进制模块(对象代码文件),通常是无法链接的。3.自动存储持续性:代码块内局部的变量,走过了就自动消失了。静态存储持续性:程序员了,就一直存在,直到程序结束。起作用域看声明的位置。线程存储持续性:并行编程用原创 2016-12-16 21:44:13 · 2683 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(14)(第九章 内存模型和命名空间 复习题答案)
9.5复习题1.a自动存储,自动成为自动变量,不需要特别声明。b外联的静态存储,在一个文件中定义为外部变量,另一个文件中使用extern来声明。c内联的静态存储,加上static来声明,也可以使用一个未命名的名称空间来定义。d无链接的静态存储,在函数中声明,要加上static。2.using声明,指定了特定的变量可用,在同一个代码块中不能再次声明同样名字的变量原创 2016-12-17 10:17:15 · 2348 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(15)(第九章 内存模型和命名空间 编程题答案)
1.Test.h#ifndef _Test_H_#define _Test_H_const int Len = 40;struct golf{ char fullname[Len]; int handicap;};void setgolf(golf& g, const char* name, int hc);int setgolf(golf& g);void han原创 2016-12-17 17:31:17 · 2435 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(16)(第十章 对象和类 笔记和复习题答案)
笔记,这章是在没什么笔记1.如果可以通过初始化,也可以通过赋值来设置对象的值,应采取初始化,通常效率会更高。2.在函数声明后面加上const,可以确保不能再函数内更高属性值。3.#include #include "Test1.cpp"using namespace std;class ch{ int i = 1; int j = 2;public:原创 2016-12-19 14:25:46 · 2791 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(17)(第十章 对象和类 编程题答案)
10.10编程题1.Test.h#ifndef _Test_H_#define _Test_H_#include #include using namespace std;class Account{public: Account(const string& name, const string& id, double money); void show(); v原创 2016-12-19 22:35:56 · 2913 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(18)(第十一章 使用类 笔记)
重载函数,友元函数,类型转换。原创 2016-12-21 10:29:59 · 2461 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(19)(第十一章 使用类 复习题答案)
运算符重载,友元函数,类型转换1.Test.h#ifndef _Test_H_ #define _Test_H_ class Stonewt{private: enum {Lbs_per_stn = 14}; int stone; double pds_left; double pounds;public: Stonewt(double lbs); Stonewt(int stn, do原创 2016-12-21 15:35:03 · 2518 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(20)(第十一章 使用类 编程题答案1)
这章主要讲重载运算符,友元函数和类型转换。1.第一题就困了我好久,怎么都访问不了私有成员,一开始以为是哪里写错了,对着书敲代码都不行。后来又觉得会不会友元的重载运算符太复杂,就自己写个简单的友元函数,发现也不行。在main函数里面调用发现可以变得过,但是链接的时候才发现居然链接不上。这个时候才想到我使用了using namespace xxx。但是对于类外的函数,是链接不上的,原创 2016-12-22 10:12:56 · 2831 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(21)(第十一章 使用类 编程题答案2)
这章主要讲重载运算符,友元函数和类型转换。答案很长,所以分开两个文章。4.原来的代码:Test.h#ifndef _Test_H_ #define _Test_H_ #include class Time{public: Time(); Time(int h, int m = 0); void AddMin(int m); void AddHr(int h); void Reset(int h =原创 2016-12-22 15:05:11 · 2762 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(22)(第十二章 类和动态内存分配 笔记)
1.类的静态成员,在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类。如果静态成员是整形或枚举型const,则可以在类声明中初始化。2.值传递的时候会调用复制构造函数,如果代码里面没有复制构造函数,则会生成一个系统默认的。但是函数结束之后,就会调用析构函数。如果是使用浅复制,可能会把原来的对象某些东西更改掉了。构造函数的原型一般这原创 2016-12-24 10:32:05 · 2362 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(23)(第十二章 类和动态内存分配 复习题和答案)
学习到这里,C++可以说,已经进入一个既是基础的地方,也是高深的地方。可能你做了几年开发,都没有接触到这些东西,但是又在潜移默化地使用着。从现在开始,所有题目都打出来。方便查看了。12.9 复习题1.假设String类有如下私有成员:class String{private: char * str; int len;};a.下述默认构造函数有什么问题?原创 2016-12-24 21:42:38 · 2681 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(24)(第十二章 类和动态内存分配 编程题和答案)
1.对于下面的类声明: class Cow { private: char name[20]; char * hobby; double weight; public: Cow(); Cow(const char * nm, const char* ho, double wt);原创 2016-12-26 11:54:14 · 3996 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(25)(第十三章 类继承 笔记)
1.派生类构造函数的要点: 首先创建基类对象; 应通过成员初始化列表将基类的初始化信息传递给基类的构造函数; 派生类构造函数应初始化新增的数据成员2.首先执行派生类的析构函数,然后自动调用基类的析构函数.3.基类指针可以在不进行显式类型转换的情况下指向派生类对象,基类引用可以在不进行显式类型转换的情况下引用派生类对象.4.C++有三原创 2016-12-27 20:09:01 · 2488 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(26)(第十三章 类继承 复习题答案)
13.10 复习题1.派生类从基类那里继承了什么?成员数据,还有一半的成员函数,公有成员和保护成员是可见的,私有成员不可见2.派生类不能从基类那里继承什么?构造函数,析构函数,赋值运算符,还有友元函数,都不能继承。3.假设baseDMA::operator=()函数的函数返回类型为void,而不是baseDMA&,这将有什么后果?如果返回类型为b原创 2016-12-27 21:04:55 · 2477 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(27)(第十三章 类继承 编程题答案)
题目都比较简单,如果有工作经验的话。主要是对类继承之后,复制构造函数,赋值运算符的处理等东西。13.11 编程练习1.以下面的类声明为基础: class Cd { private: char performers[50]; char label[20]; int selections; double playtime; public: Cd(char * s1, char* s2, int n, double x); Cd(const Cd&原创 2016-12-28 11:38:01 · 3561 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(28)(第十四章 C++中的代码重用 笔记)
1.初始化顺序是按照类定义中的顺序的。2.私有继承,基类的公有成员和保护成员都变成派生类的私有成员。在不进行显式类型转换的情况下,不能将派生类的引用或指针赋给基类引用或指针。3.保护继承,公有成员变保护成员。4.使用using可以改变基类私有变量的访问权限class son: private Father{public: using Fath原创 2016-12-28 20:03:51 · 2279 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(29)(第十四章 C++中的代码重用 复习题答案)
14.6 复习题1.以A栏的类为基类时,B栏的类采用共有派生还是私有派生更合适。AB派生类型class Bearclass PolarBear公有派生class Kitchenclass Home私有派生class Personclass Programmer公有派生class Person原创 2016-12-28 21:14:37 · 2865 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(30)(第十四章 C++中的代码重用 编程题答案)
14.7 编程练习1.Wine类有一个string类对象成员(参见第4章)和一个Pair对象(参见本章):其中前者用来存储葡萄酒的名称,而后者有2个valarry对象(参见本章),这两个valarry对象分别保存了葡萄酒的酿造年份和该年生产的瓶数。例如,Pair的第1个valarray对象可能为1988、1992和1996,第二个valarry 对象可能为24、48和144瓶。Wine最好有1原创 2016-12-29 11:24:18 · 4673 阅读 · 5 评论 -
《C++ Primer Plus(第六版)》(31)(第十五章 友元、异常和其他 笔记)
友元类,友元类函数,嵌套类,异常,运行时类型识别,type_id,type_info,各种转换1.友元类,就在类中声明个friend class className;就行了。这个是对所有成员有效的。 class A { public: A(int a){ _a = a; } friend class B; private: int _a; }; class B { public: int get(A a){ return a.原创 2016-12-29 21:13:35 · 2541 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(32)(第十五章 友元、异常和其他 复习题答案)
15.7 复习题1.下面建立友元的尝试有什么错误?a.class snap{ friend clasp; ...};class clasp{ ... };b.class cuff{public: void snip(muff&){..} ...};class muff{ friend void cuff::snip原创 2016-12-29 22:50:50 · 2798 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(33)(第十五章 友元、异常和其他 编程题答案)
总结: 貌似越到后面,就经常出现了排版混乱的情况,不知道是原版的问题还是翻译本的问题。程序例子也越来越抽象了,而且是说明的东西居多。其实初学者,甚至学得好深入的人,接触的可能还是很少。很多细节,只有在非常底层或者特定的应用中才会使用到。或者,用到的时候,百度一下就可以了。15.8 编程练习1.对Tv和Remote类做如下修改:a.让他们互为友元;b.在Remote类中添加一个状态变量成员,该成员描述遥控器是川渝常规模式还是互动模式;c.在Remote中添加一个显示模式的方法;d.在Tv原创 2016-12-30 11:36:56 · 2852 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(34)(第十六章 string类和标准模板库 笔记)
stirng,STL,智能指针,数据结构,算法1.string的构造函数string(string&& str)不保证将str视为const,这种构造函数被称为移动构造函数。在有些情况下,编译器可能使用它而不是复制构造函数,以优化性能。2.string的构造函数string(initializer_list il)能够将列表初始化语法用于string类string s = { 'a', 'b', 'c' }原创 2016-12-31 13:33:12 · 2830 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(35)(第十六章 string类和标准模板库 复习题答案)
1.考虑下面的类声明: class RQ1 { private: char* st; public: RQ1() { st = new char[1]; strcpy(st, ""); } RQ1(const char* s)原创 2017-01-02 15:55:27 · 2581 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(36)(第十六章 string类和标准模板库 编程练习和答案)
16.10 编程练习1.回文指的是顺着读和逆着读都一样的字符串。假如,“tot"和“otto”都是简短的回文。编写一个程序,让用户输入字符串,并将字符串引用传递给一个bool函数。如果字符串是回文,该函数将返回true,否则返回false。此时,不要担心诸如大小写、空格和标点符号这些复杂的问题。即这个简单的版本将拒绝“Otto”和“Madam,I'm Adam”。请查看附录F中字符串方法列表,原创 2017-01-02 23:11:26 · 2796 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(37)(第十六章 string类和标准模板库 编程练习和答案2)
16.10 编程练习6.使用STL queue模板类而不是第12章的Queue类,重新编写程序清单12.12所示的示例。7.彩票卡是一个常见的游戏。卡片上是带编号的圆点,其中一些圆点被随机选中。编写一个lotto()函数,它接受两个参数。第一个参数是彩票卡上圆点的个数,第二个参数是随机选择的圆点个数。该函数返回一个vector 对象,其中包含(安排列后的顺序)随机选择的号码。例如,原创 2017-01-03 11:52:42 · 2786 阅读 · 1 评论 -
《C++ Primer Plus(第六版)》(38)(第十七章 输入、输出和文件 笔记1)
要点:输出流1.流充当了程序和流源和流目标之间的桥梁。C++只检查字节流,而不需知道字节来自何方。C++没有将输入输出建立在语言中,而是让编译器实现的。2.使用缓冲区可以更高效地处理输入和输出。3.streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法。ios_base类表示流的一般特征,如是否可读取,是二进制流还原创 2017-01-03 19:14:17 · 2465 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(39)(第十七章 输入、输出和文件 笔记2)
要点:输入流,随机存储,seekp,seekg,tellg,tellp,sstream头文件等1.流状态成员 | 描述enfbit | 如果到文件尾,设置为1 badbit | 如果流被破坏,则设置为1;例如,原创 2017-01-04 11:31:43 · 3154 阅读 · 0 评论 -
《C++ Primer Plus(第六版)》(40)(第十七章 输入、输出和文件 复习题和答案)
17.7复习题1.iostream文件在C++I/O中扮演何种角色?iostream定义了用于管理输入和输出的类、常量和操作符,这些对象管理用于处理I/O的流和缓冲区。该文件还创建了一些标准对象(cin、cout、cerr和clog以及对应的宽字符对象),用于处理与每个程序相连的标准输入和输出流。2.为什么键入数字(如121)作为输入要求程序进行转换?输入的是字原创 2017-01-04 15:17:58 · 3252 阅读 · 2 评论