![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
Kuany_
这个作者很懒,什么都没留下…
展开
-
类似背包问题,允许超过容量的最小价值
第一行输入n和m,代表物品个数和最大容量余下n行输入n组物品v w代表物品的价值和容量输出物品能超出一定容量的最小价值和其容量例如输入6 370025 360022 180010 9006 6004 3001 60输出27 3720#include <cstdio>#include <cstring>#include <algorithm>#define ll long long const int inf = 0x3f3f3原创 2021-04-01 17:29:21 · 1001 阅读 · 4 评论 -
C++11新特性,推荐使用emplace_back()替换push_back()的原因
@TOCc++11新加入了emplace_back()用来替换push_back():在平时我们习惯性的尾插用push_back()去完成,但是如果是尾插临时对象的话,push_back()需要先构造临时对象,再将这个对象拷贝到容器的末尾,而emplace_back()则直接在容器的末尾构造对象,这样就省去了拷贝的过程。分析如下代码:#include<bits/stdc++.h>using namespace std;int i=0,j=0;class A {public:原创 2020-08-31 14:59:34 · 5032 阅读 · 1 评论 -
C++11特性之右值引用及完美转发
C++11特性之右值引用及完美转发1. 左值与右值2. 左值引用和右值引用3. 完美转发1. 左值与右值首先简明扼要地介绍下左值和右值右值:只能在=右边的值。左值:可以在=左边的值。右值不能在=左边。左值也可以在=右边。例如:int n = 1;string s = "Hello World";const float PI = 3.1415926535;const float PI_2 = PI * 2;string t = string("abc");上面这些n,s,PI,原创 2020-08-31 14:31:47 · 1362 阅读 · 1 评论 -
从labuladong东哥那里看到的位运算小技巧
从labuladong东哥那里看到的位运算小技巧1. 利用或操作 `|` 和`空格`将英文字符转换为小写2. 利用与操作 `&` 和`下划线`将英文字符转换为大写3. 利用异或操作 `^` 和`空格`进行英文字符大小写互换4. 判断两个数是否异号5. 不用临时变量交换两个数6. n&(n-1)用来消除数字 n 的二进制表示中的最后一个 17. 判断一个数是不是 2 的指数8. 查找只出现一次的元素9. n>>1表示n/2,n<<1表示n*2就不细说了说实话,最近做题原创 2020-08-23 17:52:03 · 1194 阅读 · 1 评论 -
Leetcode——二叉树的前序(第144题)、中序(94)、后序(145)、层序遍历(102)的递归和迭代写法总结
Leetcode——二叉树的前序(第144题)、中序(94)、后序(145)、层序遍历(102)的递归和迭代写法总结1. 给定一个二叉树,返回它的 前序 遍历。2. 给定一个二叉树,返回它的 中序 遍历。3. 给定一个二叉树,返回它的 后序 遍历。4. 给定一个二叉树,返回它的 层序 遍历。二叉树定义/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;原创 2020-08-22 14:40:45 · 453 阅读 · 0 评论 -
C++可重入函数和不可重入函数
C++可重入函数和不可重入函数可重入函数是指能够被多个线程“同时”调用的函数,并且能保证函数结果正确不必担心数据错误的函数。不可重入函数是指不能运行在多任务环境下,除非能保证互斥的函数。由于使用了未受保护的系统资源,如全局变量区,中断向量表等。不可重入函数在实时系统设计中被视为不安全函数。可重入函数特点:没有静态数据结构不返回指向静态数据的指针所有函数数据由函数的调用者提供使用auto变量,或通过全局变量的拷贝来保护全局变量若必须访问全局变量,则利用互斥信号保护不调用不可重入函原创 2020-08-09 21:38:02 · 1985 阅读 · 0 评论 -
C++智能指针总结(面试常问)
C++智能指针总结(面试常问)1.智能指针的实现原理2. C++11四种智能指针总结2.1 auto_ptr:2.2 unique_ptr:2.3 share_ptr:2.4 weak_ptr:1.智能指针的实现原理智能指针的实现原理就是在一个类的内部封装了类对象的指针,然后在析构函数里对我们的类对象指针进行释放,因为类的析构是在类对象生命期结束时自动调用的,这样我们就省去了手动释放内存的操作,避免忘记手动释放导致的内存泄漏。2. C++11四种智能指针总结2.1 auto_ptr:1.auto_原创 2020-08-09 11:11:57 · 3315 阅读 · 1 评论 -
C++构造函数用初始化列表进行初始化和构造函数体内赋值进行初始化的区别?
C++构造函数用初始化列表进行初始化和构造函数体内赋值进行初始化的区别? 构造函数初始化列表和构造函数体最大的区别是初始化列表是初始化,而函数体内是赋值操作; 对于普通的数据类型两种操作只有资源消耗的区别。但引用和const常量都是不能被赋值的,它们在类内只能在构造函数的参数初始化列表中被初始化。对于对引用变量和const变量的初始化问题: 在进入构造函数体内时,实际上变量都已经初始化完毕了,即引用变量和const变量都已经用不确定的值初始化好了,构造函数内能做的只有赋值,而const类型和引原创 2020-07-29 00:34:09 · 695 阅读 · 0 评论 -
STL中迭代器的作用,有指针为何还要迭代器
STL中迭代器的作用,有指针为何还要迭代器 1. 迭代器2. 迭代器和指针的区别3. 迭代器产生原因1. 迭代器 Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。 由于Iterator模式的以上特性:与聚合对原创 2020-07-28 23:25:51 · 550 阅读 · 0 评论 -
智能指针auto_ptr、unique_ptr、scoped_ptr、shared_ptr、weak_ptr
智能指针auto_ptr、unique_ptr、scoped_ptr、shared_ptr、weak_ptr1. auto_ptr1.1 作用1.2 缺陷2. unique_ptr3. scoped_ptr4. shared_ptr我们在写代码的时候经常会发生内存泄露情况,如忘记释放堆上指针、在释放前抛出了异常、多线程情况下的问题,这些都是我们不愿意发生的,所以C++有一些用于管理内存的智能指针供我们使用,可以有效防止内存泄露的情况发生。智能指针总体概述:auto_ptr ——不推荐使用shar原创 2020-07-12 13:57:30 · 515 阅读 · 1 评论 -
Linux下C/C++代码整理(格式化)工具astyle
Linux下C/C++代码整理(格式化)工具astyle1. 下载2. 使用最近复制网站上的代码到IDE里面疱的次数比较多,但是格式一般都会有问题,或者不是自己喜欢的风格,介绍一种代码整理工具,还是比较好用的。1. 下载$ sudo apt-get install astyle如果速度比较慢可以翻看我之前的配置软件源的博客,换成国内的镜像,下载速度会快一些。2. 使用使用很方便按照风格给单个文件格式化astyle --style=风格 代码文件常用风格有gnu、linux和goog原创 2020-07-03 21:42:00 · 1262 阅读 · 0 评论 -
C/C++虚函数和虚函数表概念及实现原理
C/C++虚函数和虚函数表概念及实现原理1. 概述2. 虚函数表构造过程3. 虚函数调用过程4. 多重继承1. 概述每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例:其中:B的虚函数表中存放着B::foo和B::bar两个函数指针。D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基类虚函数B::bar的D::bar,还有新增的虚函数D::quz。2. 虚函数表构造过程从编原创 2020-07-02 17:20:53 · 855 阅读 · 0 评论 -
C/C++什么是内存泄露,内存泄露如何避免?
C/C++什么是内存泄露,内存泄露如何避免?1. 内存溢出2. 内存泄漏3. 造成内存泄露常见的三种情况3.1 指针重新赋值3.2 错误的内存释放3.3 返回值的不正确处理4. 如何避免内存泄露?5. 内存泄露检测工具valgrind1. 内存溢出 内存溢出 OOM (out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个int,但给它存了long才能存下的数,那就是内存溢出。2. 内存泄漏 内存泄露 memory lea原创 2020-07-01 20:46:51 · 18503 阅读 · 2 评论 -
Linux下编译文件显示未找到动态库(“No such file or directory”)解决方法
Linux下编译文件显示未找到动态库(“No such file or directory”)解决方法我们编译程序的时候有时会加上各种链接库的命令,比如-lpthread等等,或者是我们自己创建的动态库,当动态库路径错误的时候会显示”No such file or directory“,下面提供三种坚决办法:1、找到xxxx.so放到 /usr/lib – 不推荐当安装的.so太多找不到可以使用以下方法sudo find /usr/local -name "xxxx.so"2、将xxx.原创 2020-06-28 17:34:09 · 6478 阅读 · 0 评论 -
C/C++程序内存布局
C/C++程序内存布局1. 运行可执行程序前的内存分区1.1 代码区text1.2 全局初始化数据区/静态数据区(data段)1.3 未初始化数据区(又叫 bss 区)2. 运行可执行程序后的内存分区2.1 代码区(text segment)2.2 未初始化数据区(BSS)2.3 全局初始化数据区/静态数据区(data segment)2.4 栈区(stack)2.5 堆区(heap)3. 变量作用域生命周期和储存位置总结1. 运行可执行程序前的内存分区 C代码经过预处理、编译、汇编、链接4步后生成一原创 2020-06-16 20:49:53 · 441 阅读 · 0 评论 -
C/C++变量的作用域
C/C++变量的作用域1. 局部变量2. 静态(static)局部变量3. 全局变量4. 静态(static)全局变量5. extern全局变量声明6. 全局函数和静态函数7. 总结C语言变量的作用域分为:代码块作用域(代码块是{}之间的一段代码)函数作用域文件作用域1. 局部变量局部变量也叫auto自动变量(auto可写可不写),一般情况下代码块{}内部定义的变量都是自动变量,它有如下特点:在一个函数内定义,只在函数范围内有效在复合语句中定义,只在复合语句中有效随着函数调用的结束或原创 2020-06-16 10:28:16 · 578 阅读 · 0 评论 -
vscode检测到#include错误,请更新includePath。解决方法
vscode检测到#include错误,请更新includePath。解决方法最近电脑重做,重新安装了一边vscode,但是写代码的时候发现头文件会标错,显示无法找到,下面是我的解决办法:执行命令查看g++包含路径g++ -v -E -x c++ -复制上面红框的内容在vscode中摁ctrl+shift+p搜索json文件在includePath里面粘贴红框的库路径,注意双引号和逗号格式如果再有问题,试试把"/usr/include",放在第一行,如上,解决问题......原创 2020-06-14 21:02:30 · 171571 阅读 · 88 评论 -
编写makefile模板且一键创建到当前目录方法
编写makefile模板且一键创建到当前目录方法1. 编写makefile模板2. 添加alias到~/.bashrc3. 更新文件和使用1. 编写makefile模板makefile:#create by kuanyew 20200612SrcFiles=$(wildcard *.c)TargetFiles=$(patsubst %.c,%,$(SrcFiles))all:$(TargetFiles).PHONY:all clean%:%.c g++ -o $@ $< -lpt原创 2020-06-12 11:35:45 · 308 阅读 · 0 评论 -
dup2和dup函数
dup2和dup函数1. dup22. dup1. dup2dup2的作用是使得 newfd 指向 oldfd 对应的文件,可以实现重定向。 int dup2(int oldfd, int newfd);关闭newfd对应的文件描述符,讲newfd重新指向为oldfd对应的文件文件描述符实际上是一个句柄,句柄指向一个文件。dup2的作用是使得 newfd 指向 oldfd 对应的文件。比如打开一个文件,使用dup2函数,上图就变成下图了(即原来指向/dev/tty的1指向了3指向的那个文件,原创 2020-06-08 15:47:51 · 809 阅读 · 0 评论 -
C语言小测5
C语言小测5只出现一次的数字 II给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99//leetcodeint singleNumber(int* nums, int numsSize){ int i,j...原创 2020-06-08 15:01:14 · 221 阅读 · 0 评论 -
C++Linux下文件IO基础
C++Linux下文件IO基础1. 系统api与库函数的关系2. `open`函数3. `close`函数4. `read`函数5. `write`函数6. `lseek`函数——移动文件读写位置6.1 `lseek`移动读写位置的例子6.2 `lseek`实现计算文件大小的例子6.3 `lseek`扩展文件实例7. `fcntl`函数1. 系统api与库函数的关系stdout里面有什么内容?fd,文件描述符,表示指向哪一个文件f_pos位置buffer缓冲区,默认是8k。缓冲区是为了减少IO原创 2020-06-08 13:52:09 · 658 阅读 · 0 评论 -
makefile基础
makefile1. makefile编写2. 执行makefile文件好处:一次编写,终身受益命名规则:makefile、Makefile三要素:目标、依赖、规则命令1. makefile编写写法:目标(target): 依赖(prerequiries)... tap键 规则命令(command)目标(target)通常是要产生的文件的名称,目标的例子是可执行文件或OBJ文件。目标也可是一个执行的动作名称,诸如‘clean’(仅仅表达动作的目标称为假想目标)。依赖是用来输入从而产生目原创 2020-06-07 17:51:14 · 263 阅读 · 0 评论 -
C++函数级静态库和动态库的制作与使用
函数级静态库和动态库的制作与使用1. 静态库的制作与使用1.1 创建1.2 使用2. 动态库的制作与使用2.1 创建2.2 使用库的作用:分离编译代码重用分类:分类作用后缀静态库一个或多个.o目标文件归档在一个文件中.a动态加载库没有main函数的可执行文件,接口复合API.so1. 静态库的制作与使用1.1 创建文件举例:calc.cpp#include <iostream>#include "calc.h"using na原创 2020-06-07 13:31:25 · 289 阅读 · 0 评论 -
C++写时拷贝技术
C++写时拷贝技术1. 深拷贝与浅拷贝概念和优缺点2. 写时拷贝技术1. 深拷贝与浅拷贝概念和优缺点浅拷贝:只拷贝指针地址。通常默认拷贝构造函数与赋值运算符重载都是浅拷贝。成员变量中没有指针的情况可以直接使用浅拷贝。优点:共享一份内存,节省空间缺点:在释放的时候可能会多次释放,造成内存泄漏深拷贝:重现分配堆内存,拷贝指针指向内容。例如:String类优点:每个指针指向不同的地址,避免了多次的释放缺点:重复数据较多,占用空间写时拷贝技术就是结合了深拷贝和浅拷贝各自的优点,实现数据相同时原创 2020-06-03 18:01:35 · 283 阅读 · 0 评论 -
C++类型萃取
C++类型萃取功能应用场景实现功能 类型萃取,可以在模板中萃取到变量类型,对不同变量进行不同处理,可以提升程序效率. 也就是我根据你传递过来的类型,我再决定调用那种方法 在STL中用到的比较多,用于判断一个变量是否为POD类型. 简述来说可以用来判断出某个变量是内置类型还是自定义类型.应用场景比如我们实现顺序表,在对顺序表进行扩容时,就靠重新开辟内存、拷贝对象.拷贝对象时,就有两种情况:一种是类型,比如int char…;还有一种是自定义类型,Data类、String类.对于内置原创 2020-06-03 16:09:06 · 877 阅读 · 0 评论 -
自己实现一个STL的vector容器
封装了vector的数据结构,和push_back(),capacity(),size()方法,内嵌了iterator迭代器类#include <iostream>// #include <vector>using namespace std;namespace miniSTL{template<typename T>class vector{ T* _data; size_t _size;// 元素个数 size_t _capacit原创 2020-06-02 21:14:34 · 368 阅读 · 0 评论 -
自己实现一个STL的list容器
封装了list的数据结构,和push_back(),push_front(),pop_back(),pop_front(),size()方法,内嵌了iterator迭代器类,还写了for_each()和accumulate()模板算法#include <iostream>// #include <algorithm>// #include <list>#include <exception>using namespace std;namespac原创 2020-06-02 21:12:21 · 274 阅读 · 3 评论 -
C++文件读写
C++文件读写1. 文件流类和文件流对象2. 打开文件3. 关闭文件4. 小例子1. 文件流类和文件流对象输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。在实际应用中,常以磁盘文件作为对象。即从磁盘文件读取数据,将数据输出到磁盘文件。和文件有关系的输入输出类主要在fstream.h这个头文件中被定义,在这个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操作,他们分别是ifstream、ofstream、fstream,其中fstream类是由iostream原创 2020-06-02 20:23:00 · 292 阅读 · 0 评论 -
C++标准输入流对象cin需重点掌握的函数
C++标准输入流对象cin需重点掌握的函数1. cin.get()2. cin.getline()3. cin.ignore()4. cin.peek()5. cin.putback()1. cin.get()cin.get() 一次只能从缓冲区拿走一个字符void test01(){ // 输入as 缓冲区中 a s 换行 第一个拿 a 第二个 拿 s 第三次拿换行 第四次等待下次输入 char c = cin.get(); cout << "c = " &l原创 2020-06-02 17:11:12 · 306 阅读 · 0 评论 -
C++异常处理
C++异常处理1. 异常基本概念1.1 c++异常机制相比C语言异常处理的优势?2. 异常语法2.1 异常基本语法2.2 栈解旋(unwinding)2.4 异常接口声明2.5 异常变量生命周期2.6 异常的多态使用3. C++标准异常库3.1 标准库介绍3.2 编写自己的异常类1. 异常基本概念 异常处理就是处理程序中的错误。所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在,空指针,内存不足等等)。 在C语言的世界中,对错误的处理总是围绕着两种方原创 2020-06-02 14:41:56 · 567 阅读 · 0 评论 -
C++运用静态成员实现单例模式
C++运用静态成员实现单例模式 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()方法,让客户可以访问它的唯一实例;为了防止在外部对其实例化,将其默认构造函数和拷贝构造函数设计为私有;在单原创 2020-06-01 17:36:18 · 1625 阅读 · 0 评论 -
C++四种类型转换,static_cast、dynamic_cast、const_cast、reinterpret_cast
C++四种类型转换,static_cast、dynamic_cast、const_cast、reinterpret_cast1. 静态转换(static_cast)2. 动态转换(dynamic_cast)3. 常量转换(const_cast)4. 重新解释转换(reinterpret_cast) 类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。 转换是非常有用的,但是它也会带来一些问题,比如在转换指针时,我们原创 2020-06-01 16:54:39 · 407 阅读 · 0 评论 -
C++类模板在不同情况下的使用
C++类模板1. 类模板用于实现类所需数据的类型参数化2. 类模板中成员函数 一开始不会创建出来,而是在运行时才去创建3. 类模板做函数参数3.1 指定传输类型3.2 参数模板化3.3 整体模板化4. 类模板派生普通类5. 类模板派生类模板6. 类模板类内实现7. 类模板类外实现8. 模板类碰到友元函数类模板和函数模板的定义和使用类似。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同。1. 类模板用于实现类所需数据的类型参数化类模板可以有默认参数,比如:template<typena原创 2020-06-01 14:13:22 · 1109 阅读 · 1 评论 -
C++函数模板的局限性以及解决方法(模板的特化)
C++模板的局限性以及解决方法(模板的特化)模板的局限性模板的特化(此处仅展示函数模板的特化)模板的局限性假设有如下函数模板:template<class T> void f(T a, T b) { … } 如果代码实现时定义了赋值操作 a = b,但是T为数组,这种假设就不成立了,同样,如果里面的语句为判断语句 if(a>b),但T如果是结构体,该假设也不成立,另外如果是传入的数组,数组名为地址,因此它比较的是地址,而这也不是我们所希望的操作。 总之,编写的模板函数很原创 2020-06-01 11:33:44 · 558 阅读 · 0 评论 -
C++函数模板与普通函数的区别、调用规则和模板实现机制
C++函数模板与普通函数的区别以及调用规则函数模板与普通函数的区别函数模板调用规则函数模板与普通函数的区别区别就是普通函数可以进行隐式类型转换而模板不可以,测试以下函数:#include<iostream>using namespace std;//普通函数与函数模板区别template<class T>T myPlus(T a, T b){//模板函数 return a + b;}int myPlus2(int a, int b){//普通函数 return原创 2020-06-01 10:00:00 · 399 阅读 · 0 评论 -
C++多态应用的小案例(计算器)
如果写一个计算器类,实现简单的加减乘除操作,我们初学者很可能会这么写:#include<iostream>using namespace std;class Calculator{public: void setv1(int v){ this->val1 = v; } void setv2(int v){ this->val2 = v; } int getResult(string oper){ if (oper == "+"){ return原创 2020-05-31 16:04:21 · 790 阅读 · 1 评论 -
C++多继承、菱形继承和虚继承
C++多继承和菱形继承出现的二义性问题解决方法多继承概念菱形继承和虚继承虚继承原理多继承概念我们可以从一个类继承,我们也可以能同时从多个类继承,这就是多继承。但是由于多继承是非常受争议的,从多个类继承可能会导致函数、变量等同名导致较多的歧义。class Base1{public: void func1(){ cout << "Base1::func1" << endl; }};class Base2{public: void func1(){ cout <&原创 2020-05-31 15:49:11 · 297 阅读 · 0 评论 -
C++虚析构和纯虚析构问题小记
C++虚析构和纯虚析构问题小记 在我们使用多态的时候,当我们不对父类析构函数做额外操作的话,它仅仅是析构父类自身,不会调用子类的析构,所以可能会导致释放不干净;但是对父类的析构函数加上virtual关键字,就成了虚析构,这样就可以在多态中,连同子类一起析构了。 纯虚析构函数和普通的纯虚函数写法一样,就是有一点区别是必须要为纯虚析构函数提供一个函数体,且是类内声明,类外实现。如果函数中出现了 纯虚析构函数,那么这个类也算抽象类,不能创建对象。#include<iostream>usin原创 2020-05-31 10:43:24 · 372 阅读 · 0 评论 -
C++多态与多态原理以及重载和重写(覆盖)的区别
C++多态与多态原理以及虚函数表多态多态原理重载和重写(覆盖)的区别多态多态分为两类:静态多态(编译时多态)和动态多态(运行时多态) 静态多态就是我们所熟悉的函数重载和运算符重载,而派生类和虚函数实现动态多态。 静态多态和动态多态的区别就是函数地址是早绑定(静态联编)还是晚绑定(动态联编)。如果函数的调用,在编译阶段就可以确定函数的调用地址,并产生代码,就是静态多态(编译时多态),就是说地址是早绑定的。而如果函数的调用地址不能编译不能在编译期间确定,而需要在运行时才能决定,这这就属于晚绑定(动态原创 2020-05-30 21:41:04 · 2408 阅读 · 1 评论 -
C++函数重载及原理(命名倾轧name mangling)小记
C++函数重载及原理(命名倾轧name mangling)小记命名倾轧命名反倾轧禁用命名倾轧原理小结函数重载:在C语言中,一个函数不能与另一个函数重名,而在C++中,只要一个函数的参数列表与另一个函数的参数列表不完全相同,函数名就可以相同。C++这一特点就是所谓函数的重载现象。同一个名字因为参数列表不同,展现了不同的结果,也叫静多态。重载原则:①函数名相同,函数参数列表不同(类型、个数、顺序)②匹配原则1:严格匹配,找到再调用③匹配原则2:通过隐式类型转换寻求一个匹配,找到则调用④返回值类型不原创 2020-05-30 10:54:38 · 808 阅读 · 0 评论