C++ 比 C语言增加的新特性 2

1.C++新增了带默认值参数的函数

1.1 格式

格式:返回值   函数名(参数1=初始值1,..........){} 
例如:void  function(int  a=10){}
调用:不需要更改参数的值:function();
这个调用并没有传参,如果要输出a的值,则输出默认值a=10更改参数的值:function(20);
这里改变了参数的值,如果要输出a的值,则输出a=20(即默认值被覆盖)

1.2 注意

此调用报错,因为调用function(20),这里的20 默认传递给第一个形参

void  function(int a=10,  int  c){}调用:function(20);//报错//报错信息test2.cpp:25:28: error: default argument missing for parameter 2 of ‘void function(int, int)’25 | void function(int a=10,int c)|                        ~~~~^test2.cpp:25:19: note: ...following parameter 1 which has a default argument25 | void function(int a=10,int c)

规定:函数中携带默认值的参数需要放在不携带默认值的参数后(针对于多个参数讲)

void function(int  a ,  int  c=10){}调用:function(20);

1.3 举例

main.cpp

1.3.1 例1

#include <iostream>
using namespace std;//函数的形参可以带默认值
void function(int c = 10) {cout << "c=" << c << endl;
}int main()
{function();//a=10//function(20);//a=20return 0;
}

1.3.2 例2

#include <iostream>
using namespace std;//函数的形参可以带默认值
//void function(int c = 10) {
//	cout << "c=" << c << endl;
//}//void function1(int c = 10,int b) {
//	cout << "c=" << c << endl;
//}void function2(int b,int c = 10) {cout << "b=" << b << endl;cout << "c=" << c << endl;
}int main()
{//function();//a=10//function(20);//a=20//function1(20);//报错function2(20);//报错return 0;
}

2. 内联函数

2.1 概念:

内联函数是指:程序在编译过程中直接进行展开,就不需要在执行时对于函数的参数、局部变量、函数地址等入栈/出栈操作

用途:适用于短小且使用率非常高的代码,内联函数中一般不会放置循环结构

内联函数的声明:关键字:inline格式:inline   返回值    函数名  ([参数1,..........]){}调用:函数名([实参1,....])例如:inline  void function(){}调用:function()

1.2 举例

main.cpp

//内联函数的使用
inline int max(int a,int b) {return a > b?a: b;
}int main()
{int a = 10;int b = 20;int ret = max(a,b);cout << "ret=" << ret << endl;return 0;
}

1.3 面试题

对于一段精简、使用频度高的代码,C语言如何实现才能提高效率,C++如何实现才能提高效率?

C++中将这段代码声明为内联函数

C语言使用宏来实现

例如以下两个举例

#define  get_Max(a,b)  a>b?a:b

#define   sum(a,b)    (a)*b

int  sum_result=sum(10+20 , 30) ;//900

3. 另外c++还增加了以下等等

(5)新增异常处理

C++可以主动产生异常,并捕获异常进行处理

(6)新增面向对象机制

封装、继承、多态等等

(7)智能指针

用于帮助用户管理堆内存空间

4. C++的编译流程和文件架构

4.1 C++的编译流程

与C一样,在Linux中编译C++代码,一般采用g++

请你阐述C/C++的编译流程,以及每个流程中执行的工作任务

(1)预处理

a、将除源文件以外的内容全部加入到源文件中

b、进行宏替换工作

c、删除掉注释

(2)编译

a、检查用户编写的代码是否符合C++语法规范

b、将用户编写的代码翻译成汇编语言

(3)汇编

a、将汇编语言翻译成机器语言

(4)链接

a、生成可执行文件

4.2 C++的文件架构以及扩展名

(1)主程序文件

该文件中包含main函数,一般放置类的声明与实例化,函数的声明与定义等等

(2)源文件(一般是以.cpp为主)

源文件的后缀名一般是.cpp、.cxx、.cc等等,一般放置类的成员函数实例化、函数的定义等等

(3)头文件(一般是以.h为主)

头文件的后缀名一般是.h、.hpp、.hxx等等,一般放置类的声明、变量的声明、函数的声明等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536674.shtml

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

相关文章

基于SSM和微信小程序的高校体育场管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM和微信小程序的高校体育场管理系…

文本编辑器:Sublime Text (安装+汉化)

下载 Sublime Text - Text Editing, Done Righthttps://www.sublimetext.com/Sublime Text官网 支持mac&#xff0c;Linux&#xff0c;Windows 安装 选择安装路径 next install 选择安装位置安装就行了 汉化 进入了主界面按 CTRLshiftp 输入install 选择第一个 弹窗就按确…

服务器扩容未生效、不成功:解决方法

记一次解决服务器扩容未生效的解决办法 老板&#xff1a;失忆啊&#xff0c;我花钱给服务器扩容了10000000G&#xff0c;但是数据库和mq都还是用不了&#xff0c;到底是不是服务器磁盘满了&#xff0c;你到底有没有查一下什么原因导致服务用不了啊。 失忆&#xff1a;老板您确…

概率论1:下象棋问题(3.5)

每日小语 时刻望着他人的眼色行事&#xff0c;是腾飞不了的。自己怎么想就积极地去做&#xff0c;这是需要胆量的。——广中平佑 题目 甲、乙二人下象棋&#xff0c; 每局甲胜的概率为a,乙胜的概率为b. 为简化问题&#xff0c;设没有和局的情况&#xff0c;这意味着a b1. 设想…

VR全景对普通人的生活有哪些好处?

许多普通人对VR全景还全然没有概念&#xff0c;这是因为VR全景虽然一直在快速发展&#xff0c;但目前为止也不过几年而已&#xff0c;但这发展的几年同样为我们普通人的生活带来了切实的改变和便利。VR全景技术为人们带来了沉浸感和真实感的体验&#xff0c;让我们感受到迥异于…

第十四章 集合(Set)

一、Set 接口&#xff08;P518&#xff09; 1. Set 接口基本介绍 &#xff08;1&#xff09;无序&#xff08;添加和取出的顺序不一致&#xff09;&#xff0c;没有索引。 &#xff08;2&#xff09;不允许重复元素&#xff0c;所以最多包含一个 null。 2. Set 接口的常用方法…

数据结构:KMP算法

1.何为KMP算法 KMP算法是由Knuth、Morris和Pratt三位学者发明的&#xff0c;所以取了三位学者名字的首字母&#xff0c;叫作KMP算法。 2.KMP的用处 KMP主要用于字符串匹配的问题&#xff0c;主要思想是当出现字符串不匹配时&#xff0c;我们可以知道一部分之前已经匹配过的的文…

【期刊周报1】医学好刊(SCI/SSCI/EI),含Top,领域广,接收快!

为了向广大学者朋友提供更优质的选刊服务&#xff0c;提高选刊质量&#xff0c;我处现开设周报专栏&#xff0c;以罗列我处合作的优质期刊~ 本期&#xff0c;小编给大家推荐的是医学领域相关的热门期刊&#xff0c;接收领域广&#xff0c;无预警&#xff0c;且在最新检索目录内…

Python遥感影像深度学习指南(2)-在 PyTorch 中创建自定义数据集和加载器

在上一篇 文章中,我们Fast.ai 在卫星图像中检测云轮廓,检测物体轮廓被称为语义分割。虽然我们用几行代码就能达到 96% 的准确率,但该模型无法考虑数据集中提供的所有输入通道(红、绿、蓝和近红外)。问题在于,深度学习框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多数语…

油烟净化器如何做到高效净化?科技力量,清新餐饮生活

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 油烟净化器的出现&#xff0c;为我们的餐饮生活注入了一抹清新的色彩。然而&#xff0c;它究竟是如何工作的&#xff1f;为何能…

【开题报告】基于SSM的健康饮食系统设计与实现

1.研究背景 如今&#xff0c;随着人们生活水平的提高和健康意识的增强&#xff0c;越来越多的人开始关注自己的饮食习惯&#xff0c;并希望通过合理的饮食来维持身体健康。然而&#xff0c;对于许多人来说&#xff0c;了解和选择合适的饮食方式并不容易。传统的饮食指导往往比…

【并发设计模式】聊聊Immutability模式利用不变性解决并发问题

上一篇文章&#xff0c;我们介绍了如何利用二阶段停止协议进行优雅停止线程和线程池&#xff0c;本篇介绍在并发编程中数据安全性&#xff0c;我们知道针对于数据的操作&#xff0c;读和写(添加、删除、修改), 在并发线程读写的时候&#xff0c;变量不加锁的情况下&#xff0c;…

redis哨兵+redis主从复制(在虚拟机centos的docker下)

1.安装docker Docker安装(CentOS)简单使用-CSDN博客 2.redis主从复制 redis主从复制(在虚拟机centos的docker下)-CSDN博客 3.编辑3个redis配置 cd /etc mkdir redis-sentinel cd redis-sentinel/ wget http://download.redis.io/redis-stable/sentinel.confcp sentinel.co…

ssh 免密登陆公钥设置失败分析调试

前景 看到这里肯定已经知道如何设置免密登陆。本文主要用于解决免密登陆设置失效问题。 ssh调试 目的 ssh设置了公钥仍然无法免密登陆; 需要调试 解决 通过systemctl status sshd的日志输出查看原因 步骤 打开调试 systemctl status sshd查看所在服务文件 $ sudo sys…

【并发编程篇】读锁readLock()和写锁writeLock()

文章目录 &#x1f6f8;情景引入⭐解决问题 readLock()和writeLock()都是ReadWriteLock接口中定义的方法&#xff0c;用于获取读锁和写锁。 readLock()方法返回一个读锁&#xff0c;允许多个线程同时获取该锁&#xff0c;以进行并发读取操作。如果当前已有一个写锁或其他线程正…

GIT具体配置步骤详解

GIT配置具体步骤如下 SDK 使用 Repo 工具管理&#xff0c;拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workf…

装饰器模式和责任链模式区别

近期看了 mybatis 的源码&#xff0c;发现二级缓存这块用了装饰器模式将各个功能的缓存进行嵌套&#xff0c;源码上也是讲到使用了装饰器模式&#xff0c;但是看着跟责任链模式类似&#xff0c;本着搞清楚的想法&#xff0c;搜了很多资料&#xff0c;看了书籍《Head First 设计…

AI行业新趋势:百模大战中的变革与未来

AI行业新趋势&#xff1a;百模大战中的变革与未来 人工智能&#xff0c;这个曾经被视为科幻小说的情节&#xff0c;如今已经成为我们生活中的常态。从智能手机、自动驾驶汽车&#xff0c;到智能家居、医疗诊断&#xff0c;AI的应用已经深入到我们生活的各个角落。然而&#xf…

多维时序 | MATLAB实CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测预测效果基本介…

ubuntu 22.04 安装mysql服务

完整内容&#xff1a; https://developer.aliyun.com/article/1260321 # 安装服务 sudo apt install mysql-server# 按向导设置root密码 sudo mysql_secure_installation# 使用设置的密码登录 sudo mysql -u root -p也可以使用工具登录&#xff0c;例如: navicat for mysql