- 博客(91)
- 收藏
- 关注
原创 8.类模板分文件编写
一.问题:类模板中,成员函数创建时机是在调用阶段,这会导致分文件编写时连接不到二.解决:解决方式1:直接包含.cpp源文件解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称, 并不是强制。
2024-02-20 13:08:46 431
原创 5.类模板
类模板在模板参数列表中可以有默认参数。2. 类模板在模板参数列表中可以有默认参数。类模板没有自动类型推导的使用方式。1.类模板没有自动类型推导的使用方式。
2024-02-19 12:34:42 365
原创 4.函数模板的局限性
在上面的代码中,我们自定义了person类,并且通过这个person类创建了两个具体的对象p1和p2,现在我想要比较这两个人的年龄,我们继续使用上面的创建的模板,能否实现成功的比较呢?答案是不行,编译器报错了,编译器不知道要怎么比较两个Person类的实例化对象,因此在这里,我们需要使用函数模板重载的方法来实现对象的比较。函数模板的通用性并不是万能的,我们自己人为定义的新的数据类型,模板不一定总能进行正确的识别与操作。函数,针对这个特定的类型提供了特殊的实现逻辑 ,成功实现两个Person对象的年龄比较。
2024-02-19 11:36:41 393
原创 3.普通函数与函数模板的调用规则
解释:在这里,变量为字符型,普通函数传入字符型变量可以发生隐式转换,模板函数可以自动匹配参数类型但是,普通函数要发生类型转换,模板函数不需要,显然模板函数的调用要更适合,因此在这里的结果是调用了模板函数。既然提供了函数模板,最好就不要提供普通函数,否则容易出现二义性。(1).如果函数模板和普通函数都可以实现,优先调用普通函数。(4)如果函数模板可以产生更好的匹配,优先调用函数模板。-如果函数模板和普通函数都可以实现,优先调用普通函数。-如果函数模板可以产生更好的匹配,优先调用函数模板。
2024-02-19 10:59:06 760
原创 2.普通函数与函数模板的区别
普通函数调用时可以发生隐式类型转换,在Add(10,'A')函数中,字符A被隐式换为了int类型,其值变为了其对应的ASCII码65,因此相加结果变为75。函数模板 用显式指定类型推导,在Add(10,'A')函数中,字符A被隐式换为了int类型,其值变为了其对应的ASCII码65,因此相加结果变为75。函数模板 用自动类型推导,在Add(10,'A')函数中,字符A的类型为char,无法发生隐式类型转换,因此报错。2.3函数模板 用显式指定类型推导,可以发生隐式类型转换。
2024-02-18 12:30:33 396
原创 1.函数模板基础
建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表,提高复用性。运行发现报错了,这是因为。typename和class:关键字,声明其后面的符号是一种数据类型,可以用class代替。T:通用的数据类型名称可以替换,通常为大小写。template:关键字,声明创建模板。
2024-02-18 11:21:59 891
原创 C语言:函数
本章知识点:(1) 函数的定义方法。(2) 函数的实参与形参。(3) 函数的嵌套与递归调用。(4) 局部变量和全局变量的概念和使用。(5) 变量的存储类别、作用域和生存期。(6)宏定义及文件包含。
2024-02-17 20:22:54 2084
原创 三.自定义实现文件
三.WorkerManager.cpp。一.Employee.cpp。一.Employee.cpp。二.Manager.cpp。三.Boss.cpp。
2024-02-17 20:01:51 530
原创 二.自定义头文件
这些成员函数是针对 Employee 类的操作和功能定义的,用于实现对普通员工对象的属性获取和信息显示。这些成员函数是针对经理 类的操作和功能定义的,用于实现对经理对象的属性获取和信息显示。这些成员函数是针对总裁 类的操作和功能定义的,用于实现对总裁对象的属性获取和信息显示。来使用标准命名空间中的标识符。- 功能:通过接收参数,将参数赋值给类的属性,完成对象的初始化。- 功能:通过接收参数,将参数赋值给类的属性,完成对象的初始化。- 功能:通过接收参数,将参数赋值给类的属性,完成对象的初始化。
2024-02-17 20:00:56 1923
原创 一.职工管理系统开发概述
1.1项目名称:职工管理系统1.2目的:管理和处理职工信息,包括添加、删除、查询、显示和排序职工信息。1.3需求:添加职工:能够添加不同类型的职工,包括普通员工、经理和老板。- 删除职工:根据职工的ID进行删除操作,将该职工从系统中移除。- 修改职工:根据职工的ID进行修改操作,可以修改职工的姓名、岗位、薪水等信息。- 查找职工:根据职工的ID或姓名进行查找,以获得该职工的详细信息。- 显示职工:将系统中的所有职工信息显示在屏幕上,以便查看。
2024-02-17 20:00:27 362
原创 9.C++ const修饰成员函数
1.常函数:(1)指const修饰的成员函数(2)常函数不会修改类的成员变量(除非成员变量被声明为mutable)2.常对象:(1)指用关键字const修饰的对象(2)常对象的成员变量在对象创建后就不能被修改(3)常对象只能调用常量成员函数,因为常对象不允许对其成员变量进行修改。
2024-01-28 14:12:50 492
原创 8.C++ 类对象空指针访问成员函数
但是第二次程序中成员函数ShowClassFunc()体内用到this指针时,由于此时ptr并没有指向具体的对象实体,所以this指向空,当进行赋值的时候,编译器不知道这个成员变量是哪一个对象的(不知道this->m_A = 20是哪个对象在调用),所以它不知道给哪个对象的m_A赋值,因此就会出错。在前面的认知里,空指针是不能访问有用的数据和函数的,因为空指针并没有指向什么有意义的数据存储空间。但是在C++类对象中就不见得是这样了,也就是说当我们的程序被编译之后,此成员函数在内存空间中地址即已确定。
2024-01-28 13:02:50 636
原创 链表的应用1--多项式求和
今天学数据结构学到的链表应用于多项式相加,但是书上的代码没看懂,在看了点资料和问ChatGPT以后想到的一个算法,后面有更好的想法在回来更新算法。
2024-01-26 18:35:33 566
原创 7.C++ this指针
每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。那么这一块代码是如何区分那个对象调用自己的呢?C++通过提供特殊的对象指针,this指针,解决上述问题。this指针不需要定义,直接使用即可。
2024-01-19 15:18:34 413
原创 1.C++程序的内存模型
代码区:存放函数的二级制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区: 由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。
2024-01-19 14:43:34 434
原创 字符串复制,拼接,比较大小函数
这是一个字符串比较函数,作用是比较两个字符串。其中 str1 和 str2 是要进行比较的字符串。如果 str1 < str2,则返回值 < 0;如果 str1`== str2,则返回值 == 0;如果 str1 > str2,则返回值 > 0。字符串比较是按照 ASCII 值进行的。
2023-11-12 20:05:11 276 1
原创 1070 结绳
给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。给定 N 段绳子的长度,你需要找出它们能串成的绳子的最大长度。输入格式:每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (2≤N≤104);第 2 行给出 N 个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过104。
2023-11-06 21:50:27 107
原创 1069 微博转发抽奖
小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。输入第一行给出三个正整数 M(≤ 1000)、N 和 S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从 1 开始)。随后 M 行,顺序给出转发微博的网友的昵称(不超过 20 个字符、不包含空格回车的非空字符串)。注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。
2023-11-06 20:55:53 121
原创 1067 试密码
当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。输入在第一行给出一个密码(长度不超过 20 的、不包含空格、Tab、回车的非空字符串)和一个正整数 N(≤ 10),分别是正确的密码和系统允许尝试的次数。随后每行给出一个以回车结束的非空字符串,是用户尝试输入的密码。输入保证至少有一次尝试。当读到一行只有单个 # 字符时,输入结束,并且这一行不是用户的输入。对用户的每个输入,如果是正确的密码且尝试次数不超过 N,则在一行中输出。
2023-11-05 14:48:28 131
原创 1060 爱丁顿数
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数 E。据说爱丁顿自己的 E 等于87。现给定某人 N 天的骑车距离,请你算出对应的爱丁顿数 E(≤N)。输入第一行给出一个正整数 N (≤105),即连续骑车的天数;第二行给出 N 个非负整数,代表每天的骑车距离。在一行中给出 N 天的爱丁顿数。6。
2023-11-03 12:29:52 193
原创 1056 组合数的和
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。输出所有可能组合出来的2位数字的和。3 2 8 5330。
2023-11-02 18:14:19 211
原创 结构体数据类型使用的一些注意点
结构体的定义(struct declaration)只是决定了数据的布局和类型。在这个期间,并没有为这些数据分配内存。只有当你声明一个特定的结构体变量时,内存才会被分配,并且你可以在此时为它赋值(初始化)。这是因为结构体定义是用于创建一种新的类型,而不是创建一个变量。类型是一种抽象的概念,没有实际的存储空间,所以不能为其直接赋值。2.正确定义。
2023-11-01 21:28:21 257
原创 1052 卖个萌
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。现给出可选用的符号集合,请你按用户的要求输出表情。输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过 10 个符号;每个符号包含 1 到 4 个非空字符。之后一行给出一个正整数 K,为用户请求的个数。随后 K 行,每行给出一个用户的符号选择,顺序为左手、左眼、口、右眼、右手——这里只给出符号在相应集合中的序号(从 1 开始),数字间以空格分隔。
2023-10-31 17:04:12 94
原创 1051 复数乘法
复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i2=−1;也可以写成极坐标下的指数形式 (R×e(Pi)),其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 R(cos(P)+isin(P))。现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。输入在一行中依次给出两个复数的 R1, P1, R2, P2,数字间以空格分隔。在一行中按照A+Bi的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数。注意:如果B。
2023-10-29 17:15:17 94
原创 1049 数列的片段和
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。给定正整数数列,求出全部片段包含的所有的数之和。
2023-10-27 23:31:16 106
原创 1048 数字加密
本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。在一行中输出加密后的结果。3695Q8118。
2023-10-27 21:29:33 140
原创 1043 输出PATest
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。在一行中按题目要求输出排序后的字符串。题目保证输出非空。
2023-10-25 12:46:51 69
空空如也
PTA 1014福尔摩斯的约会测试点2,3不通过
2023-10-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人