c++ primer plus

《C++ Primer Plus》学习笔记0

拟墨画扇 提交于 2020-02-21 05:46:25
Hello,World! 本书版本:《C++ Primer Plus(第6版)中文版》 C++是在C语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是C语言的超集。 本书是根据2003年的ISO/ANSI C++标准编写的。 本书内容(18章+10附录) 第1章 预备知识:本章介绍Bjarne Stroustrup如何通过在C语言的基础上添加面向对象编程的支持,来创造C++编程语言。讨论面向过程语言(如C语言)与面向对象语言(如C++)之间的区别。您将了解ANSI/ISO在制定C++标准方面所做的工作。本章还讨论了创建C++程序的技巧,介绍了当前几种C++编译器使用的方法。 第2章 开始学习C++:本章介绍创建简单C++程序的步骤。您可以学到main()函数扮演的角色以及C++程序使用的一些语句。您将使用预定义的cout和cin对象来实现程序输出和输入,学习如何创建和使用变量。最后,本章还将介绍函数——C++的编程模块。 第3章 处理数据:C++提供了内置类型来存储两种数据:整数和浮点数。为满足程序员的各种需求,C++为每一种数据都提供了几个类型。本章将要讨论这些类型,包括创建变量和编写各种类型的常量。另外,还将讨论C++是如何处理不同类型之间的隐式和显式转换的。 第4章 复合类型:C++让程序员能够使用基本的内置类型来创建更复杂的类型。最高级的形式是类

《C++ Primer Plus》第五章习题与参考答案

有些话、适合烂在心里 提交于 2020-01-24 05:46:17
文章目录 5.8 复习题 5.9 编程练习 1,内容选自《C++ Primer Plus》(第6版)中文版,2017年1月河北第21次印刷版本 2,文章系笔者学习笔记,若有错误,欢迎指正 3,如有雷同,纯属巧合 5.8 复习题 1.入口条件循环和出口条件循环之间的区别是什么?各种c++循环分别属于其中的哪一种? 入口条件循环在进入入口循环体之前将评估测试表达式。如果条件最初为false,则循环不会执行其循环体。出口条件循环在处理循环体之后评估测试表达式。因此,即使测试表达式最初为false,循环也将执行一次,for和wihle循环都是入口条件循环,而do while是出口条件循环。 2.如果下面的代码片段是有效程序的组成部分,它将打印什么内容? int i ; for ( i = 0 ; i < 5 ; i ++ ) cout << i ; cout << endl ; 它将打印下面的内容: 01234 3.如果下面的代码片段是有效程序的组成部分,它将打印什么内容? int j ; for ( j = 0 ; j < 11 ; j + = 3 ) cout << j ; cout << endl << j << endl ; 它将打印下面的内容: 0369 12 4.如果下面代码是有效程序的组成部分,它将打印什么内容? int j = 5 ; while ( ++ j < 9 )

《C++ Primer Plus》第14章 C++中的代码重用 学习笔记

和自甴很熟 提交于 2020-01-22 21:29:36
C++提供了集中重用代码的手段。第13章介绍的共有继承能够建立is-a关系,这样派生类可以重用基类的代码。私有继承和保护继承也使得能够重用基类的代码,单建立的是has-a关系。使用私有继承时,积累的公有成员和保护成员将称为派生类的私有成员;使用保护继承时,积累的公有成员和保护成员将称为派生类的保护成员。无论使用哪种继承,基类的共有接口都将称为派生类的内部接口。这有时候被称为继承实现,但并不继承接口,因为派生类对象不能显式地使用基类的接口。因此,不能将派生类对象看作是一种基类对象。由于这种原因,在不进行显式类型转换的情况下,基类指针或引用将不能指向派生了对象。 还可以通过开发包含对象成员的类来重用类代码。这种发哪个发被称为包含、层次化或组合,它建立的也是has-a关系。与私有继承和保护继承相比,包含更容易实现和使用,所以有限采用这种方式。然而,私有继承和保护及成比包含有一些不同的功能。例如,继承允许派生类访问基类的保护成员;还允许派生类重新定义从基类那里继承的虚函数。因为包含不是继承,所以通过包含来重用类代码时,不能使用这些功能。另一方面,如果需要使用某个类的几个对象,则用包含更适合。例如,State类可以包含一组Country对象。 多重继承(MI)使得能后在类设计中重用多个类的代码。私有MI或保护MI建立has-a关系,而共有MI建立is-a关系。MI会带来一些问题

《C++ Primer Plus》第16章 string类和标准模板库 学习笔记

笑着哭i 提交于 2020-01-09 21:23:02
C++提供了一组功能强大的库,这些库提供了很多常见编程问题的解决方案以及简化其他问题的工具string类为将字符串作为对象来处理提供了一种方便的方法。string类提供了自动内存管理动能以及众多处理字符串的方法和函数。例如,这些方法和函数让您能够合并字符串、将一个字符串插入到另一个字符串中、反转字符串、在字符串中搜索字符或姊姊富川以及执行输入和输出操作。 诸如auto_ptr以及C++11新增的shared_ptr和unique_ptr等智能指针模板使得管理由new分配的内存更容易。如果使用这些智能指针(而不是常规指针)来保存new返回的地址,则不比在以后使用删除运算符。智能指针对象过期时,其析构函数将自动调用delete运算符。 STL是一个容器类模板、迭代器类模板、函数对象模板和算法函数模板的集合,它们的设计是一致的,都是基于泛型编程原则的。算法通过使用模板,从而独立于所存储的对象的类型;通过使用迭代器接口,从而独立于容器的类型。迭代器是广义指针。 STL使用术语“概念”來描述一组要求。例如,正向迭代器的概念包含这样的要求,即正向迭代器能 够被解除引用,以便读写,问时能够被递增。概念真正的实现方式被称为概念的“模型”例如,正向迭代器概念可以是常规指针或导航链表的对象。基于其他概念的概念叫作“改进”例如,双向迭代器是正向迭代器概念的改进。

《C++ Primer Plus》16.4 泛型编程 学习笔记

▼魔方 西西 提交于 2020-01-09 21:10:35
STL是一种泛型编程(generic programming)。面向对象编程关注的是编成的数据方面,而泛型编程关注的是算法。它们之间的共同点是抽象和创建可重用代码,单他们的理念决然不同。 泛型编程旨在编写独立于数据类型的代码。 16.4.1 为何使用迭代器 理解迭代器是理解STL的关键所在。模板使得算法独立于存储的数据类型,而迭代其使算法独立于使用的容器类型。因此,它们都是STL通用方法的重要组成部分。 为了解为何需要迭代器,我们来看如何为两种不同数据表现实现find函数,然后来看如何推广这种方法。首先来看一个在double数组中搜索特定值的函数,可以这样编写该函数: double * find_ar(double * ar, int n, const double & val) { for (int i = 0; i < n; i ++) if (ar[i] == val) return &ar[i]; return 0; // or, in C++11, return nullptr; } 如果函数在数组中找到这样的值,则返回该值在数组中的地址,否则返回一个空指针。该函数使用下标来便利数组。可以用模板将这种算法推广到包含==运算符的、任意类型的数组。尽管这样,这种算法仍然与一种特定的数据结构(数组)关联在一起。 下面来看搜索另一种数据结构——链表的情况

一篇关于程序员的文章

匿名 (未验证) 提交于 2019-12-03 00:34:01
选择比努力更重要 关于方向的选择其实越早确定越好,生活中我们要面临无数个选择,前几天看的一个黑客相关的美剧中有句台词说的不错: life is binary 生活就是二进制,一个个0101组成的。每一次抉择,选了就是1,不选就是0。另外也有一句话说:“人一生要面临很多选择,但是真正能决定你命运的只有几个”。没错其实就是这样。 如果你是计算机专业的学生,那么到底是考研还是就业就是首先要面临的问题。本文是面向确定了毕业要工作的大学生的,所以关于这个抉择,不再赘述。 就业的话,本文标题是码农,实际是指所有计算机相关的技术工种。包括开发、测试、运维等。 很多选择本身并没有对错或优劣,只有适合不适合。 不要滥用勤能补拙,这个词语一度被很多人奉为圭皋,但同时成了枷锁。我相信这个词,但是要考虑现状,要考虑投资回报率。你在自己并不擅长或不感兴趣的领域深耕了四年,最后不一定能获得多少成绩。当然如果你能在毕业后继续深耕几年或许是可以的,但是我希望每一位大学生在毕业的时候都能有一份好的工作,并且如果你并不喜欢某一领域的话,那么我相信你一定不会坚持下去。所以我们一定要找到适合自己的方向! 那么如何发现自己对什么感兴趣呢?我也不知道很好的办法,我只知道一个朴素的方法――尝试。趁着年轻,就要多尝试。千万不要大三了都还不知道自己兴趣在哪,想做什么,适合什么。所以大一大二努力去碰钉子吧。 算法还是开发