【C++ 基础】从C到C++有哪些变化

devtools/2024/12/29 8:05:23/

C到C++

	C++相比C语言来说,多了两个核心,五个内容:1、面向对象的思维;2、模板(泛型编型)1.bool 2.引用 3.内联 4.重载 5.缺省参数

变量


数据类型 bool

  • 布尔 占1个字节 取值:true false

      bool isMax(int a, int b){return a > b;}
    

引用 为变量取别名

  • typedef int HP;//为类型取别名

  • *三种:乘号,解引用,指针

  • &三种:位与,取地址,引用

     void mySwap(int a, int b)//值传递{int temp = a;a = b;b = temp;}void mySwap(int *pa, int *pb)//址传递{int temp = *pa;*pa = *pb;*pb = temp;}void mySwap(int &a, int &b)//引用传递{int temp = a;a = b;b = temp;}
    
  • 函数的值拷贝,如果是一个结构变量,尽量使用指针

  • 在C++里面,除了指针拷贝之外,还可以使用引用。使用指针和引用效率是一致

  • 指针和引用的区别:

    1、指针是一个有内存的实体,引用只是一个外号
    2、引用是常量,常量必须初始化赋值
    3、指针可以赋空
    4、指针内存唯一,引用不唯一
    

函数


内联函数

  • 通过内存膨胀来减少函数的跳转
    函数前面加关键字inline (空间换时间)

      inline int myAdd(int a, int b){return a + b;}
    
  • 内联的缺点

      1、如果函数内的函数体代码比较长,不建议内联2、函数体内有循环,不建议内联什么时候用内联:简单的赋值语句,及返回数据(函数体极少,使用频率高,用内联)int playHp = 0;inline int GetIndex(int num){return num % 10;}inline void SetValue(int v){playHp = v;}
    

函数重载

  1. 函数

    把代码的模块化为工具,以此增加代码的复用性

     int myAdd(int x,int y)//计算两整型数据和的工具函数{	return x+y;	}
    
  2. 函数重载

    一个函数名对应多个函数体,什么情况下构成重载:满足两个条件:

    -函数名一致

    -参数列表不一致

     1.参数对应位置类型不同2.参数的个数不同
    

    例如

     int myAdd(int x,int y)   double myAdd(double x,double y)   int myAdd(int x,int y,int z){                        {                                 {return x+y;                 return x+y;                    return x+y+z;}                        }                                 }
    

    注意:和函数返回值没有关系

  3. 重载的应用

     #include<iostream>using std::cout;//using namespace std;using std::endl;//前一种命名空间方式要安全int myAdd(int x,int y){return x+y;}double myAdd(double x,double y){return x+y;}int myAdd(int x,int y,int z){return x+y+z;}int main(){cout<<myAdd(1,2)<<endl;cout<<myAdd(1.1,2.2)<<endl;//注意小数在编译过程中,会被看作double类型,float类型需要在小数后加fcout<<myAdd(1,2,3)<<endl;	return 0;//使用重载函数时,注意类型转换带来的错误}
    

函数缺省参数

  1. 缺省参数

    函数在定义形参时给出初始值

     int myMul(int x,int y=9){return x*y;}
    
  2. 注意事项

    -参数的缺省只能从后往前,依次缺省,不能从前往后

     int myMul(int x,int y=9,int z){函数体}//错误的写法
    

    -参数的缺省,在只有定义的情况下可以在写在定义上,如果有声明,只要在声明中缺省,不要在定义中缺省

     #include<iostream>using std::cout;using std::endl; int myMul(int x,int y=9);//函数声明int main(){cout<<myMul(4)<<endl;return 0;}int myMul(int x,int y=9)//函数定义{return x*y;}//编译报错:重定义默认参数 : 参数 2
    

    -函数的参数缺省与重载混合使用时,一定要注意参数缺省导致重载的二义性

     #include<iostream>using std::cout;using std::endl;int myMul(int x,int y){return x*y;}int myMul(int x,int y,int z=9){return x*y*z;}int main(){cout<<myMul(2,3)<<endl;return 0;}//提示错误:对重载函数的调用不明确
    
  3. 缺省参数的应用

     #include<iostream>using std::cout;using std::endl; int myMul(int x,int y=9){return x*y;}int main(){cout<<myMul(4)<<endl;cout<<myMul(4,6)<<endl;//6会覆盖9return 0;}
    

http://www.ppmy.cn/devtools/145579.html

相关文章

基于Spring Boot的智慧农业专家远程指导系统

一、系统背景与意义 随着科技的不断进步&#xff0c;农业领域也在积极寻求创新与发展。然而&#xff0c;传统农业生产中农民往往依靠经验进行种植和养殖&#xff0c;缺乏科学的指导和技术支持。同时&#xff0c;农业专家资源有限&#xff0c;难以覆盖广大的农村地区&#xff0…

C#中的委托机制:深入理解与应用

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

github如何给本机绑定 ssh密钥(MACOS)

生成 SSH 密钥 如果没有现成的密钥&#xff0c;执行以下命令来生成一个新的 SSH 密钥&#xff1a; ssh-keygen -t rsa -b 4096 -C "替换为你的邮箱" 添加 SSH 密钥到 SSH 代理 在终端中运行以下命令&#xff0c;启动 SSH 代理&#xff1a; eval "$(ssh-agen…

最新的强大的文生视频模型Pyramid Flow 论文阅读及复现

《PYRAMIDAL FLOW MATCHING FOR EFFICIENT VIDEO GENERATIVE MODELING》 论文地址&#xff1a;2410.05954https://arxiv.org/pdf/2410.05954 项目地址&#xff1a; jy0205/Pyramid-Flow&#xff1a; 用于高效视频生成建模的金字塔流匹配代码https://github.com/jy0205/Pyram…

【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程

系列文章目录 【zookeeper核心源码解析】第一课&#xff1a;zk启动类核心流程序列图 【zookeeper核心源码解析】第二课&#xff1a;俯瞰QuorumPeer启动核心流程&#xff0c;实现选举关键流程 【zookeeper核心源码解析】第三课&#xff1a;leader与follower何时开始同步&#…

机器学习之scikit-learn(简称 sklearn)

scikit-learn&#xff08;简称 sklearn&#xff09;是 Python 生态中一个非常流行且强大的机器学习库&#xff0c;支持各种机器学习算法和工具。 核心模块和功能 监督学习 (Supervised Learning)&#xff1a; 分类 (Classification): 支持的算法&#xff1a;KNN、SVM、决策树、…

科技赋能医疗挂号:SSM 医院预约挂号系统的 Vue 卓越设计与达成

3系统分析 3.1可行性分析 通过对本医院预约挂号系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院预约挂号系统采用SSM框架&#xff0c;JAVA作为开发语…

【Tomcat运行startup.bat闪退】

Tomcat运行startup.bat闪退 问题描述寻找报错原因修正注意 问题描述 双击startup.bat文件闪退&#xff01; 寻找报错原因 首先查看tomcat日志&#xff0c;发现logs文件是空的。 然后我们在当前文件夹打开cmd或者powershell&#xff0c;通过文件指令运行一下启动指令。 PS D…