C++PrimerPlus
文章平均质量分 79
C++PrimerPlus学习笔记
笔记作者:Llonvne
zjsru_Beginner
这个作者很懒,什么都没留下…
展开
-
C++PrimerPlus 学习笔记 | 第八章 函数探幽 | 1. 内联函数
内联函数当我们使用函数,会使得函数从当前位置跳跃到另一个位置开始执行,还需要记住当前位置以便返回,然后来回跳跃和记忆是需要时间的,所以C++提供了另外一种方式也就是内联函数,内联函数的编译代码与其他的程序代码“内联”起来了,也就是说编译器将会使用相应的内联函数的代码替换函数调用,对于内联函数程序无需跳转到另一个位置。所以内联函数运行速度比常规函数稍快,但代价是占用更多内存,如果一个程序在不同的10处内联函数调用,那么这个程序将包含这段代码的十个副本。如果执行函数代码比处理函数调用机制的时间长,则不需要内原创 2022-02-09 10:41:22 · 265 阅读 · 0 评论 -
gergovia的交易tijie
直线上有nn个等距村庄,每个村庄要么买酒,要么卖酒。设第ii个村庄对酒的需求为AiAi(−1000⩽Ai⩽1000−1000⩽Ai⩽1000),其中Ai>0Ai>0表示买酒,Ai原创 2022-07-30 11:51:32 · 79 阅读 · 0 评论 -
STL标准模板库(Standard Template Library)一周学习总结
在对STL的学习过程中,我对于容器有了一定的基础认识,容器分为了8个部分+2个操作。原创 2022-07-04 23:59:35 · 151 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第八章 函数探幽 | 2.引用参数
引用变量引用变量的实现在C++中允许使用 & 符号来声明引用int a = 1;int & b = a; // b 是 a 的别名且 &b == &a引用在声明的时候必须初始化,而指针可以先声明再赋值且引用不许更改引用对象int a = 1;int & b = a;int c = 2;b = c // ? &b == &c NO! ,&b == &a a == b == c看似更改了b的引用位置其实不然,只是将原创 2022-02-09 10:42:59 · 597 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第八章 函数探幽 |3.默认参数 & 4.函数重载
默认参数默认参数是指当函数调用的时候省略了实参自动使用的一个值.// 函数原型void wow(int n = 1);// 如果这样调用函数等价于 wow(1)wow() // == wow(1)对于带有参数列表的函数,必须从右向左添加默认值,也就是说,要为某个参数设置默认值,则必须为他右边的所有参数提供默认值。实参按从左往右的顺序依次被赋给相应的形参,不能跳过任何参数,也就是说如果要使用某项参数的默认值,则所有在其右边的参数都必须为默认值.以下的原型和调用都是非法的// 函数原型in原创 2022-02-09 10:45:49 · 383 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第八章 函数探幽 |5.函数模版
函数模版函数模版是通用函数的描述。也就是说使用范型来定义函数,其中的范型可以用于具体类型的类型进行替换(如int或者double,或者是任何的用户自定义类型),通过将类型参数传递给模版,可以使得编译器生成该类型的函数。由于模版允许以范型(而非具体的类型)的方式来编写程序,因此也可以称为通用编程.由于类型是由参数表示的,有时候模版也被称为参数化类型。引入:swap函数我们可以通过引用变量很轻松的写出一个int类型或者double类型的交换函数,如下void swap(int & a, int原创 2022-02-09 16:50:46 · 513 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第九章 内存模型和命名空间 |1.单独编译
单独编译C++允许甚至鼓励程序员将组件函数放到独立的文件中,在C++中可以单独编译这些文件,然后将它们链接成可执行的程序。(一般来说C++编译器及编译程序也管理链接器)但是问题来了到底如何划分一个程序放到多个文件中,难道就是简单的讲他们分开吗?假如一个文件中包含了一份结构定义,那么如果在另一个文件也想使用这个定义,那就必须要包含结构声明,那随着使用的文件数量增多,就会出现相当声明,万一想要修改声明,难道要修改这么多份吗?所以与其将其这么多声明单独的放到文件中,不如放在头文件中(.h),然后在每一份源码包原创 2022-02-11 11:13:47 · 210 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第九章 内存模型和命名空间|2.0 存储持续性性,作用域,链接性 & 2.1 自动变量持续性
存储持续性性,作用域,链接性C++使用三种(C++11使用四种)不同的方案来存储时间,四种方案的区别就是数据保留在内存中的时间自动存储连续性:在函数定义中声明的变量(包括函数参数)的存储持续性性是自动的。它们在程序开始执行其所属的函数或者代码的时候被创建,在执行完函数或者代码块的时候被释放,C++有两种存储持续性位自动的变量。静态存储连续性:在函数定义外定义的变量和使用关键字static定义的变量的存储持续性都为静态,它们在整个程序运行时都存在,C++有三种该类型的变量。线程存储持续型(C++11原创 2022-02-11 11:16:53 · 212 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第九章 内存模型和命名空间|2.2 静态存储持续型变量 & 2.3 外部链接性 & 2.4 内部链接性 & 2.5 无链接型
静态持续变量C++为静态存储持续性变量提供了3种链接性,分别是外部链接性(可在其他文件中访问),内部链接性(只能在当前文件中访问),无链接性(只能在当前函数或者代码块中访问),这三种链接性都在整个程序执行时期存在,与自动变量相比它们的寿命更长,由于静态变量的数目在程序运行期间都是不变的,因此程序不需要使用特殊的装置来管理,编译器将分配固定的内存块来存储所有的静态变量;如果没有显示的初始化静态变量,编译器将其设置为0,默认情况下静态数组和结构的每个元素或成员的所有位都设置为0.想要创建链接性为外部的静原创 2022-02-12 09:46:11 · 229 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第九章 内存模型和命名空间|2.6 说明符和限定符
说明符和限定符有些被称为存储说明符,或者是cv限定符存储说明符如下auto; // 在C++11(不包含C++11)之前表示自动变量,C++11中用于自动类型推导,即C++11(不包含C++11)是存储说明符号,C++11(含C++11)以后不再是存储说明符register; // 在C++11(不包含C++11)表示寄存器变量,在C++11(包含C++11)之后仅表示自动自动变量static; extern;thread_local; //(C++11新增)mutable;除了thre原创 2022-02-12 10:32:21 · 306 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第九章 内存模型和命名空间|2.7 函数与链接性 & 2.8 语言与链接性 & 2.9 存储方案和动态分配
函数与链接性与变量一样,函数也有链接性,虽然选择范围稍小,与C语言一样,C++不允许在一个函数中定义另外一个函数,因此所有函数的存储持续性都是静态的,即在程序执行期间一直存在,在默认情况下函数的链接性为外部,可以在所有文件中共享(与全局变量一样需要声明,实际上也可以与全局变量一样,用extern显式的指出该函数在其他文件处定义)。与全局变量一样的是也可以使用static修饰函数使得函数链接性变为内部的,使之只能在一个文件中使用。必须在原型和定义都使用static修饰。使用static函数只在该文件中文件原创 2022-02-12 13:57:19 · 309 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第九章 内存模型和命名空间|2.10 名称空间
名称空间在C++中名称可以是变量函数结构美剧类和类的结构和成员,随着项目的增大,名称相互冲突的可能性也可能上升,当使用多个厂商的类库,可能导致名称冲突。C++标准提供了名称空间工具,以便更好的控制名称的作用域.传统的C++名称空间声明区域是指可以在其中进行声明的区域。例如函数外面声明的全局变量,对于这种变量声明区域为其所在文件,对于函数中声明的变量,其声明区域为其所在代码块。潜在作用域变量的潜在作用域为从变量声明点开始到其声明区域结束,因此潜在作用域比声明区域小,这是由于变量必须定义后才能使用。原创 2022-02-12 16:13:13 · 382 阅读 · 1 评论 -
C++PrimerPlus 学习笔记 | 第十章 类和对象|1 过程性编程和面对对象编程 & 2 抽象和类
抽象和类类型是什么内置类型指定3件事情决定数据对象需要的内存数量决定如何解释内存中的位,long和float数据位数相同,但是转换为数据的方法却不一样。决定可使用数据对象执行的操作和方法内置类型有关操作的信息被内置到编译器中来,但是C++中定义用户自定义的类型的时候,必须自己提供这些信息。C++的类类是一种将抽象转换为用户自定义类型的C++工具,他将数据表示和操纵数据的方法组合成一个整洁的包。如何定义类,一般来说类规范由两个部分组成:类声明:以数据成员的方式描述数据部分,以成员函数原创 2022-02-13 16:45:49 · 80 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十章 类和对象|2.3.实现类的成员函数 & 2.4.使用类 2.5.小结
实现类的成员函数实现类的第二个步骤就是为在类声明中的函数原型提供代码,成员函数定义与常规函数非常类似,它们有函数头与函数体,也有返回类型和参数,但是它们还包含两个特殊的特征定义成员函数使用作用域解析符(::::::)来标识函数所属的类类方法可以访问类的privateprivateprivate组件首先成员函数的函数头使用作用域解析符来指出函数所属的类 如下所示void Stock::update(double price);上述代码表示update函数是Stock类的成员函数。因此作用域原创 2022-02-14 10:27:58 · 126 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十章 类和对象|3 类的构造函数和析构函数
类的构造函数和析构函数对于大多数的类,都应该为类提供构造函数和析构函数,问题是为什么需要这种函数:C++的目标之一就是让使用类对象类似于使用内置的标准类型一样。然后到现在为止我们还无法直接在声明的时候直接向初始化结构或者数组一样初始化类。int a = 1;struct car { std::string name; int years;};car c{"Moon",3200};class pen { std::string brand; int price;原创 2022-02-14 13:39:56 · 402 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十章 类和对象|4 this 指针 & 5 对象数组 & 6 类作用域
thisthisthis指针假设我们要创建一个创建汽车比较函数,通过一个类对象调用,给定比的对象,返回价高者的引用,原型如下const car & higherPrice(const car & c) const;该函数会隐式的访问的一个对象,就是调用这个函数的类对象,会显式访问一个对象,就是函数形式参数的那一个对象,那么问题来了如何返回这个隐式访问的对象呢?看下面的实例const car & higherPrice(const car & c) const{ r原创 2022-02-15 10:10:12 · 608 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十章 类和对象|7 抽象数据类型 8 总结
抽象数据类型前面定义的carcarcar类非常具体,程序常常通过定义类表达更加通用的概念,就抽象数据类型ADT的而言,使用类是非常好的概念,顾名思义ADT以通用的方式来描述数据类型,而没有引入语言和实现细节,例如栈。我们不妨以栈为例,来看看如何描述一个抽象数据类型具有的操作可以创建空栈可以讲数据项添加到栈顶可以讲数据项从栈顶删除可以查看栈是否填满可以查看栈是否为空来看下面实例typedef int Item;class Stack{private: enum class原创 2022-02-15 10:32:31 · 278 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十一章 使用类 | 1.运算符重载
运算符重载运算符重载是一种形式的C++多态,运算符重载将前面的函数重载重载运用到运算符上,允许赋予C++运算符多种含义。实际上许多C++(也包括C语言)运算符都已经被重载。C++根据操作数的数量和类型确定使用那种运算符。C++允许将运算符重载扩展到用户自定义的类型。例如相加两个数组一般写法是for (int i = 0; i < size; i++){ dest[i] = s1[i] + s2[i];}但是通过重载运算符可以写成dest = s1 + s2;这种简单的加法隐藏原创 2022-02-17 11:00:15 · 303 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十一章 使用类 | 2.友元 & 3.运算符重载使用成员还是非成员函数 & 4. 矢量类
友元C++控制对类私有部分发的访问,但是在有些时候这些控制过于严格,以至于不适用于特定的编程问题,在这种情况下C++提供类另外一种形式的访问权限友元友元函数友元类友元成员函数通过让函数成为友元可以让他拥有与类成员相同的访问权限,下面主要介绍友元函数。需要注意的是友元函数仍是普通函数,不是成员函数所以没有this指针!!!。为什么需要友元函数,我们不妨来思考下述,问题存在一个时间类,需要重载*运算符,让其内部的时间可以按照给定的系数q,倍乘如果重载了乘法运算符,这个主要差异在两者类型原创 2022-02-17 13:30:06 · 443 阅读 · 0 评论 -
C++PrimerPlus 学习笔记 | 第十一章 使用类 | 4 矢量类的补充 & 5 类的自动转换和强制转换 & 6 总结
多种方法表示方式和类可以用不同但等价的方式表示的量,类似于前面的货币,黄金的用各种货币表示,类非常适用于在一个对象中表现实体的不同方面,首先在一个对象中存储多种表示方式,然后编写类函数,使得当以任意一种方式赋值当时候都能自动更新所有的量,也可以如上所示,只存储一种表示方法,在需求其他表示方式的时候进行转换。类允许从本质上而不是从表达方式看一个量为矢量类重载算术运算符如果方法通过计算得到一个新的类对象,则应该考虑是否应该通过构造函数建立,这种方法不仅可以避免麻烦,也可以保证类对象的正确建立/因为元素符原创 2022-02-17 15:28:17 · 392 阅读 · 0 评论