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

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.rhkb.cn/news/495224.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言初阶【13】——打印一个数的每一位(递归和非递归实现)

1. 题目 打印一个数的每一位 2.分析 首先先实现非递归方式&#xff0c; 以123为例。我们要获取它的每一位&#xff0c; 获取个位数&#xff1a;123 %10 3 获取十位数&#xff1a;123/10 12 之后在 12%10 2&#xff1b; 获取百位数&#xff1a;12/10 1 之后再1%10 1&#x…

webrtc学习----前端推流拉流,局域网socket版,一对多

提示&#xff1a;局域网socket版&#xff0c;一对多 文章目录 [TOC](文章目录) 前言一、教程二、webrtc工作流程三、推流端四、拉流五、socket服务六、效果七、备注总结 前言 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种实时通讯技术&#xff0c;允许网…

深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223

深入探讨 Go 中的高级表单验证与翻译&#xff1a;Gin 与 Validator 的实践之道 在现代后端开发中&#xff0c;表单验证是保证数据完整性和服务稳定性的核心环节。如何优雅、高效地实现表单验证&#xff0c;同时提供人性化的错误提示&#xff0c;是每位开发者的必修课。在本文中…

单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?

《野狗子》游戏运行时提示dbghelp.dll缺失&#xff1a;原因与解决方案 在畅游《野狗子》这款引人入胜的游戏世界时&#xff0c;突然遭遇“dbghelp.dll缺失”的错误提示&#xff0c;无疑会给玩家的探险之旅蒙上一层阴影。作为一名深耕软件开发领域的从业者&#xff0c;我深知此…

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…

Flutter 异步编程简述

1、isolate 机制 1.1 基本使用 Dart 是基于单线程模型的语言。但是在开发当中我们经常会进行耗时操作比如网络请求&#xff0c;这种耗时操作会堵塞我们的代码。因此 Dart 也有并发机制 —— isolate。APP 的启动入口main函数就是一个类似 Android 主线程的一个主 isolate。与…

一键打断线(根据相交点打断)——CAD c# 二次开发

多条相交线根据交点一键打断&#xff0c;如下图&#xff1a; 部分代码如下: finally namespace IFoxDemo; public class Class1 {[CommandMethod("ddx")]public static void Demo(){//"ifox可以了".Print();Database db HostApplicationServices.Workin…

Confluent Cloud Kafka 可观测性最佳实践

Confluent Cloud 介绍 Confluent Cloud 是一个完全托管的 Apache Kafka 服务&#xff0c;提供高可用性和可扩展性&#xff0c;旨在简化数据流处理和实时数据集成。用户可以轻松创建和管理 Kafka 集群&#xff0c;而无需担心基础设施的维护和管理。Confluent Cloud 支持多种数据…

【C++】B2066救援题目分析和解决讲解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af; 题目&#x1f4af; 题目分析每个屋顶计算的元素 &#x1f4af; 思路解析1. **读取输入**2. **计算屋顶时间**3. **结果精确取整** &#x1f4af; 完整解决代码&#x1f4a…

WPS工具栏灰色怎么办

WPS离线不登录&#xff0c;开启工具栏等相关功能 当你在使用WPS的过程中&#xff0c;若因网络问题或其他特殊原因&#xff0c;导致无法登录使用WPS时&#xff0c;可根据以下步骤开启离线兼容模式&#xff0c;开启此模式后&#xff0c;可在未登录的状态下&#xff0c;激活并使用…

反射探针.

一、在unity场景中如何添加反射探针&#xff1f; 可以先添加一个空对象&#xff0c;在空对象的上方添加反射探针组件&#xff08;Reflection Probe&#xff09; 反射探针的类型有&#xff1a;Baked、Custom、Realtime 其中“Baked”反射探针类型&#xff0c;可以将场景中的静态…

SecureCRT汉化版

目录 9.5.1版 8.1.4版 下载链接 SecureCRT 和 SecureFX 是由 VanDyke Software 开发的专业工具&#xff0c;分别专注于安全的终端仿真与文件传输。SecureCRT 提供高效的终端仿真和多协议支持&#xff0c;是网络管理和系统配置的首选工具&#xff1b;SecureFX 则致力于安全的…

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实现CNN-LSSVM…

使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 目录 出现错误的情况 报错&#xff1a; 代码&#xff1a; 报错截图 原因分析 解决方案 方法一 方法二 出现错误的情况 以下是我遇到该错误时遇到的报错和代码&…

【知识】cuda检测GPU是否支持P2P通信及一些注意事项

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 代码流程 先检查所有GPU之间是否支持P2P通信&#xff1b;然后尝试启用GPU之间的P2P通信&#xff1b;再次检查所有GPU之间是否支持P2P通信。 test.cu&…

专栏二十三:Python读取和分析空间数据的经验杂谈

部分情况同样适合单细胞的分析结果 读取数据阶段 1.错误的library_id 包括sc和sq的两种读取方式&#xff0c;大同小异。 理论上有h5数据和spatial文件夹就可以读取成功&#xff0c;并且自动赋予和文件名一样的library_id&#xff0c;例如 slide sq.read.visium("/ho…

《软件设计的哲学》阅读摘要之设计原则

《软件设计的哲学》&#xff08;A Philosophy of Software Design&#xff09;是一本在软件架构与设计领域颇具影响力的书籍&#xff0c;作者 John Ousterhout 在书中分享了诸多深刻且实用的软件设计理念。书中列举的这些设计原则&#xff0c;汇聚了作者丰富的实战经验与深邃的…

Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行

一、部署LDAP 1、安装LDAP yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openldap openldap-servers-sql systemctl start slapd systemctl enable slapd2、创建第一个管理账号密码&#xff08;设置为ldapadmin&#xff09; slappass…

【MySQL基础篇】多表查询(隐式/显式内连接、左/右外连接、自连接查询、联合查询、标量/列/行/表子查询)

Hiヽ(゜▽゜ )&#xff0d;欢迎来到蓝染Aizen的CSDN博客~ &#x1f525; 博客主页&#xff1a; 【✨蓝染 の Blog&#x1f618;】 &#x1f496;感谢大家点赞&#x1f44d; 收藏⭐ 评论✍ 文章目录 MySQL基础篇-多表查询一、多表关系1. 一对多2. 多对多3. 一对一 二、多表查询…

【踩坑记录】C编程变量未初始化导致的程序异常

1、在编程的时候养成良好的习惯&#xff0c;定义变量以后记得给变量初始化&#xff0c;不然可能会产生一些意想不到的Bug。 2、比如下面的例子&#xff0c;如果定义的变量没有被初始化就有可能是一个随机值。如果代码少还好&#xff0c;很容易排查出来。但如果是一个比较大的项…