
C++ Primer Plus
文章平均质量分 89
yangSHU21
这个作者很懒,什么都没留下…
展开
-
第十四章——C++中的代码重用
valarray类是由头文件valarray支持的。这个类用于处理数值(或具有类似特性的类),它支持诸如将数组中所有元素的值相加以及在数组中找到最大值和最小值的操作。valarray被定义为一个模板类,以便能够处理不同的数据类型模板特性意味着声明对象时,必须指定具体的数据类型。以Stack类为基础来建立模板private:int top;采用模板时,将使用模板定义替换Stack声明,使用模板成员函数替换Stack的成员函数。原创 2023-11-29 11:22:00 · 860 阅读 · 0 评论 -
第十七章——输入输出
流和缓冲区C++程序把输入和输出看作字节流。输入时,程序从输入流中抽取字节;输出时,程序将字节插入到输出流中流充当了程序和流源或流目标之间的桥梁。这使得C++程序可以以相同的方式对待来自键盘的输入和来自文件的输入通常使用缓冲区可以更高效地处理输入和输出。缓冲区是用作中介的内存块,是将信息从设备传输到程序或从程序传输给设备的临时存储工具。流、缓冲区和iostream文件iostream文件中包含一些专门用来实现、管理流和缓冲区的类。原创 2023-07-16 13:35:51 · 208 阅读 · 0 评论 -
第十五章——友元、异常
让Remote::set_chan()成为Tv类的友元的方法是,在Tv类声明中将其声明为友元。原创 2023-07-15 16:54:49 · 195 阅读 · 0 评论 -
第十三章——类继承
brass.cpp。原创 2023-07-14 16:17:07 · 237 阅读 · 0 评论 -
第十一章——使用类
像sum()一样,operator +()也是由Time对象调用的,它将第二个Time对象作为参数,并返回一个Time对象,因此可以像调用sum()那样来调用operator +()方法。在运算符表示法中,运算符左侧的对象(这里为coding)是调用对象,运算符右边的对象(这里是fixing)是作为参数被传递的对象。例如,operator +()重载+运算符,operator *()重载*运算符。多数C++运算符都可以用这样的方式重载,重载的运算符不必是成员函数,但必须至少有一个操作数是用户定义的类型。原创 2023-07-12 16:59:44 · 166 阅读 · 0 评论 -
第十章——对象和类
现在需要创建Stock的构造函数。由于需要为Stock对象提供3个值,因此应为构造函数提供3个参数。(第四个值total_val成员,是根据shares和share_val计算得到的,因此不必为构造函数提供这个值),下面是构造函数的一种可能定义。原创 2023-07-12 10:42:59 · 161 阅读 · 0 评论 -
第九章——内存模型和名称空间
一个名称空间中的名称不会与另一个名称空间中的相同名称发生冲突,同时允许程序的其他部分使用该名称空间中声名的东西。在funct1()中声名的变量的count的作用域为局部,没有链接性,这意味着只能在funct1()函数中使用它,就像自动变量llama一样。(然而,变量并非在其潜在作用域内的任何位置都是可见的,例如它可能被另一个在嵌套声明区域中声明的同名变量隐蔽。将结构声明放在头文件中是可以的,因为它们不创建变量,而只是在源代码文件中声明结构变量时,告诉编译器如何创建该结构变量;C++变量的作用域有多种。原创 2023-07-11 09:03:45 · 132 阅读 · 0 评论 -
第八章——函数探幽
如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同,而变量名是无关紧要的;函数模板是通用的函数描述,也就是说它们使用泛型来定义函数,其中的泛型可用具体的类型(如 int 或 double)替换。假如已经定义了一个交换两个int值的函数,但是现在需要交换两个double值,则一种方法是复制原来的代码,并用double替换所有的int。程序员请求将函数作为内联函数,编译器并不一定会满足这种请求,它可能认为该函数过大或函数调用了自己(内联函数不能递归),因此不将其作为内联函数。原创 2023-07-10 20:51:57 · 253 阅读 · 0 评论 -
第七章——函数(C++的编程模块)
可以将函数分为两类:没有返回值的和有返回值的函数。没有返回值的函数称为void函数。原创 2023-07-10 15:27:09 · 189 阅读 · 0 评论 -
第六章——分支语句和逻辑运算符
设计智能程序的一个关键是使程序具有决策能力。上一章介绍了一种决策方式——循环,在循环中程序决定是否继续循环。本章我们来研究一下如何使用分支语句在可选择的操作中做出决定。原创 2023-07-10 09:30:02 · 257 阅读 · 0 评论 -
第五章——循环和关系表达式
执行完循环体后,程序返回测试条件,对它进行重新评估,如果该条件非0,则再次执行循环体,测试和执行将一直进行下去,直到测试条件为false为值。两个版本对操作数的影响是一样的,但是影响的时间不同。而++b的意思是先将b的值加1,然后使用新的值来计算表达式(区别就在于”使用后修改“和”修改后使用“)C++11新增了一种基于范围的for循环,简化了一种常见的循环任务:对数组(或容器)的每个元素执行相同的操作,例如。其中x最初表示数组的第一个元素,显式第一个元素后不断执行循环,而x依次表示数组的其他元素。原创 2023-07-09 10:56:16 · 162 阅读 · 0 评论 -
第四章——复合类型
数组虽然可以存储多个元素,但是要求所有元素的类型必须相同。C++中的结构是一种比数组更灵活的数据格式,同一个结构中可以存储多种类型的数据。结构是用户定义的类型,而结构声明定义了这种类型的数据属性。关键字struct表明,这些代码定义的是一个结构的布局,标识符inflatable是这种数据格式的名称。这样便可以像创建char或int类型的变量那样创建inflatable类型的变量了。接下来的大括号中包含的是结构存储的数据类型的列表,其中每一个列表项都是一条声明语句。总之结构定义指出了新类型的特征。原创 2023-07-08 17:21:59 · 298 阅读 · 0 评论 -
第三章——处理数据
面向对象编程(OOP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配。在创建自己的类型之前必须先了解C++内置的类型。内置的C++类型分为两组:基本类型和复合类型。原创 2023-07-07 18:07:08 · 326 阅读 · 0 评论 -
第二章——开始学习C++
如果两个已封装好的产品中都包含了一个同名函数,这样在使用的时候编译器不知道要使用哪一个,名称空间让厂商能够将其产品封装在一个叫名称空间的单元中,这样就可以通过名称空间的名称来区分是哪个厂商的产品。预处理器在进行主编译之前对源文件进行处理,上面的程序使用了#include<iostream>编译指令,该编译指令导致预处理器将iostream文件的内容添加到程序中(这是一种典型的预处理器操作,在源文件被编译之前,替换或添加文本)位于函数名前面的部分叫做函数返回类型,它描述的是函数返回给它的调用函数的信息;原创 2023-07-07 10:45:54 · 2705 阅读 · 2 评论 -
C与C++不一样的地方
与强调算法的过程性编程不同的是,OOP强调的是数据,试图让语言来满足问题的要求,其理念是设计与问题的本质特性相对应的数据格式。定义的数据部分应包括顶点的位置、长和宽、4条边的颜色和样式、矩形内部的颜色和填充图案等;从概念上说,过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作,程序命令计算机按一系列流程生成特定的结果。不过OOP强调的是编程的数据部分,而泛型编程强调的是独立于特定数据类型。主要理解泛型指的是创建独立于类型的代码。数据是程序使用和处理的信息,而算法是程序使用的方法。原创 2023-07-07 06:42:59 · 149 阅读 · 0 评论