c到c++衔接速成

温馨提示:本篇文章乃博主多次学习后的总结,其中一些专业名词的概念不会做介绍,本篇文章只解决实操问题

c到c++中,语法上得到了许多升级,那么哪些地方升级了,我们来快速复习一下

目录

头文件的升级

命名空间

定义方式

本质

命名空间使⽤

输入和输出

输入

变量名输入

数组输入

普通数组的输入

字符串的输入

输出

普通输出

数组的输出

缺省参数

概念

种类

半缺省

全缺省

函数重载

// 1 、参数类型不同

// 2 、参数个数不同

// 3 、参数类型顺序不同

错误的函数重载

引用

概念

定义

特性

引用的使用

const引用

引用和指针的关系

inline

nullptr


头文件的升级

c语言的头文件<stdio.h>包含了输入以及输出,当然啦在vs中还需要再加上一串特殊的代码才能保证scanf正常使用

c++头文件<iostream>包含了输入和输出,但并没有使用库,因此当使用cin和cout时依旧会报错,那么如何解决这种问题呢?方法一使用using namespace std; 方法二使用辩位符(::),如果你愿意也可以叫它冒号双胞胎,那么只要是遇到std库包含的东西就必须在它的前面加上std::

命名空间

定义方式

namespace 空间名

{


}

本质

定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量

命名空间使⽤

1.指定命名空间访问, 即:命名空间::(辨位符)

2.using将命名空间中某个成员展开, 即在main函数上面添加using namespace 空间名;

输入和输出

输入

变量名输入

cin >> a;

数组输入

普通数组的输入

for(int i = 0; i < sz(数组的长度);i++)

{
       cin >> a[i];

}

字符串的输入

cin >> a;//这个a是数组名。

输出

普通输出

cout << 变量名 << endl;

数组的输出

for(int i = 0; i < sz(数组的长度);i++)

{
       cout << a[i];

}

缺省参数

概念

声明或定义函数时为函数的参数指定⼀个缺省值。

种类

半缺省

概念:函数的部分形参有缺省值

注意:必须从右往左依次连续缺省,不能间隔跳跃给缺省值。

样例:

void Func2(int a, int b = 10, int c = 20)

{

cout << "a = " << a << endl;

cout << "b = " << b << endl;

cout << "c = " << c << endl << endl;

}

全缺省

概念:函数的部分形参有缺省值

样例:

void Func1(int a = 10, int b = 20, int c = 30)

{

cout << "a = " << a << endl;

cout << "b = " << b << endl;

cout << "c = " << c << endl << endl;

}

函数重载

概念:在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。

// 1 、参数类型不同

int Add(int left, int right)

{

cout << "int Add(int left, int right)" << endl;

return left + right;

}

double Add(double left, double right)

{

cout << "double Add(double left, double right)" << endl;

return left + right;

}

// 2 、参数个数不同

void f()

{

cout << "f()" << endl;

}

void f(int a)

{

cout << "f(int a)" << endl;

}

// 3 、参数类型顺序不同

void f(int a, char b)

{

cout << "f(int a,char b)" << endl;

}

void f(char b, int a)

{

cout << "f(char b, int a)" << endl;

}

错误的函数重载

void f1()

{

cout << "f()" << endl;

}

void f1(int a = 10)

{

cout << "f(int a)" << endl;

}

注意:函数重载只与参数有关

引用

概念

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,当然它的本质还是传地址

定义

类型& 引⽤别名=引⽤对象;

特性

1.引⽤在定义时必须初始化

2.⼀个变量可以有多个引⽤

3.引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体

总结:引用必须初始化,变量支持多引用,只能引用一个实体

引用的使用

引⽤在实践中主要是引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被 引⽤对象。

引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。

总结:可以减少拷贝从而提高效率,改变引用对象的同时,被引用对象也会被改变

样例:

void Swap(int& rx, int& ry)

{

int tmp = rx;

rx = ry;

ry = tmp;

}

const引用

const引用的对象可以是必须要const引用的对象或普通对象,对象的访问权限在const引⽤过程中只会缩小

引用和指针的关系

1.概念上,引用是给一个变量取别名,指针是存储一个变量的地址

2.初始化方面,引用必须初始化,指针建议初始化(也就是可以不初始化,但可能会出现一些问题)

3.引用:引用了一个对象后,不能再引用其他对象 指针:可以不断地变化所指向的对象

4.引用:直接指向一个对象   举例:在函数中使用引用后,形参改变后,实参也会改变

   指针:需要解引用才能指向对象   举例:在函数中使用指针后,实参需要靠返回的指针才会改变

5.指针可能会出现空指针和野指针的问题,引用很少出现

6.sizeof中含义不同,引⽤结果为引⽤类型的⼤⼩,但指针始终是地址空间所占字节个数

inline

被inline修饰的函数叫内联函数,那么什么是内联函数?说白了就是将一些函数进行了折叠。

那么被它修饰的函数通常是那些短小且调用频繁的函数

被inline修饰的函数会在被调用处展开

nullptr

比c的NULL更高级,更好用,更安全

那么本篇文章的内容,就先到这里了。我们下期见。

都看到这里了,点个赞吧!

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

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

相关文章

Android基于gradle task检查各个module之间资源文件冲突情况

做组件化开发的时候&#xff0c;我们经常会遇到各个不同的module之间资源文件冲突的问题&#xff0c;运行也不报错&#xff0c;但是会出现覆盖的问题&#xff0c;导致运行之后发送错误的效果。 所以我们需要利用一个gradlke 脚本task&#xff0c;来自动化检查资源文件冲突。 …

利用 OBS 推送 WEBRTC 流到 smart rtmpd

webrtc whip 推流 & whep 拉流简介 RFC 定义 通用的 webrtc 对于 SDP 协议的交换已经有对应的 RFC 草案出炉了。这就是 WHIP( push stream ) & WHEP ( pull stream ) . WHIP RFC Link: https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html WHEP RFC Link:…

IRP读写函数

驱动代码&#xff1a; #include <ntddk.h>#define DEVICE_NAME L"\\device\\MyDricer1" //设备对象名称 #define LINK_NAME L"\\dosdevices\\Goose" //符号链接名称VOID UnDirver(PDRIVER_OBJECT pDriverObj) {UNICODE_STRING uLinkName RTL_CONST…

04_实现调度执行

什么是可调度&#xff1f;所谓可调度&#xff0c;指的是当 trigger 动作触发副作用函数重新执行的时候&#xff0c;有能力决定副作用函数执行的时机、次数以及方式 副作用函数执行方式 示例代码&#xff1a; const obj { a: 1 } const objProxy new Proxy(obj, /* ... */)…

02.顺序表、链表简述+对比

目录 一、线性表 二、顺序表 三、链表 四、顺序表和链表的区别 一、线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列&#xff08;相同特性指都为整型int、字符型char或其它类型&#xff09;。 线性表是一种在实际中广泛使用的数据…

雷池社区版配置遇到问题不要慌,查看本文解决

很多新人不太熟悉反向代理&#xff0c;所以导致配置站点出现问题 配置问题 记录常见的配置问题 配置后攻击测试没有拦截记录 检查访问请求有没有真实经过雷池 有很多新人配置站点后&#xff0c;真实的网站流量还是走的源站&#xff0c;导致雷池这边什么数据都没有 配置后…

软考《信息系统运行管理员》- 5.2 信息系统数据资源例行管理

5.2 信息系统数据资源例行管理 文章目录 5.2 信息系统数据资源例行管理数据资源例行管理计划数据资源载体的管理存储介质借用管理存储介质转储管理存储介质销毁管理 数据库例行维护健康检查数据库日志检查数据库一致性检查 数据库监测管理数据库备份与恢复数据库备份与恢复数据…

三子棋(C 语言)

目录 一、游戏设计的整体思路二、各个步骤的代码实现1. 菜单及循环选择的实现2. 棋盘的初始化和显示3. 轮流下棋及结果判断实现4. 结果判断实现 三、所有代码四、总结 一、游戏设计的整体思路 &#xff08;1&#xff09;提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…

生成式人工智能助长更复杂的网络攻击

网络安全公司 Keeper Security 表示&#xff0c;尽管黑客使用生成式人工智能使网络威胁更加频繁、更加复杂、更难以检测&#xff0c;但许多企业表示对此并未做好准备。 然而&#xff0c;据该公司表示&#xff0c;尽管各组织需要加强防御能力&#xff0c;但他们已经实施的许多基…

从调用NCCL到深入NCCL源码

本小白目前研究GPU多卡互连的方案&#xff0c;主要参考NCCL和RCCL进行学习&#xff0c;如有错误&#xff0c;请及时指正&#xff01; 内容还在整理中&#xff0c;近期不断更新&#xff01;&#xff01; 背景介绍 在大模型高性能计算时会需要用到多卡&#xff08;GPU&#xf…

接口性能测试,这个还真有用啊。

一、概述 性能测试按照不同视角&#xff0c;可以分为以下几类&#xff1a; a. 用户视角的性能 用户角度感受到的网站响应速度的快和慢。从用户在浏览器输入网址/打开应用&#xff0c;到整个页面呈现给用户的耗时。包含了用户端发送请求&#xff0c;服务端收到并执行请求&…

Python和MATLAB及C++和Fortran胶体粒子数学材料学显微镜学微观流变学及光学计算

&#x1f3af;要点 二维成像拥挤胶体粒子检测算法粒子的局部结构和动力学分析椭圆粒子成链动态过程定量分析算法小颗粒的光散射和吸收活跃物质模拟群体行为提取粒子轨迹粘弹性&#xff0c;计算剪切模量计算悬浮液球形粒子多体流体动力学概率规划全息图跟踪和表征粒子位置、大小…

StableDiffusion|833种艺术家风格项目,提示词直接上手! AI绘画文生图直接抄!

大家好&#xff0c;我是画画的小强 众所周知&#xff0c;Stable Diffusion是一个强大的文生图模型&#xff0c;能够根据用户的文本描述生成高质量的图像。在这个过程中&#xff0c;提示词&#xff08;Prompt&#xff09;的选择和构造具有至关重要的作用。提示词是向模型描述你…

强化学习之Q-learning算法

前言&#xff1a; 在正文开始之前&#xff0c;首先给大家介绍一个不错的人工智能学习教程&#xff1a;https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程&#xff0c;感兴趣的读者可以自行查阅。 一、算法介绍 Q-Learning是一种基于值函数的强…

山西农业大学20241015

02-VUE 一. Vue中常用的指令1. Vue指令概述2 Vue中指令的分类3 Vue中指令3.1 内容渲染指令3.2 条件渲染指令3.2.1 v-show3.2.2 v-if3.2.3 v-else 和 v-else-if 3.3 事件绑定指令 v-on--重要3.3.1 内联语句3.3.2 methods中的函数名 一. Vue中常用的指令 1. Vue指令概述 概念: 指…

STL --- list(C++)

本期鸡汤&#xff1a; “星光不负赶路人&#xff0c;时光不负有心人&#xff1b;你只管努力&#xff0c;剩下的交给时间。” 目录 1.list的介绍即使用 1.1list介绍 1.2list使用 1.2.1list构造 1.2.2list的iterator的使用 1.2.3list capacity 1.2.4list element access 1…

LeCun数十年经验之谈:视觉是建立AGI的核心,视频理解难点在哪?语言模型技术为何难以复用于视觉?

文字来源 | 夕小瑶科技说 AI寒武纪 大语言模型&#xff08;LLM&#xff09;已经接近人类水平&#xff0c;但视觉理解在世界范围似乎尚未突破&#xff0c;那么为何不能直接将LLM技术用于视觉&#xff1f;让AI看视频的难点在哪&#xff1f;如果语言是AGI必要的能力&#xff0c;为…

【Java 22 | 6】 深入解析Java 22 :记录(Records)增强详解

Java 22 对记录&#xff08;Records&#xff09;进行了重要的增强&#xff0c;进一步提升了这一特性在数据建模和类型安全方面的灵活性。以下是对记录类的详细介绍&#xff0c;包括基础概念、增强特性、使用场景、实际项目中的应用示例&#xff0c;以及示例代码。 1. 基础介绍…

使用js和canvas实现简单的网页贪吃蛇小游戏

玩法介绍 点击开始游戏后&#xff0c;使用键盘上的↑↓←→控制移动&#xff0c;吃到食物增加长度&#xff0c;碰到墙壁或碰到自身就游戏结束 代码实现 代码比较简单&#xff0c;直接阅读注释即可&#xff0c;复制即用 <!DOCTYPE html> <html lang"en"…

快速理解http的get和post

在网络通信中&#xff0c;HTTP 协议扮演着非常重要的角色&#xff0c;而不同的 HTTP 方法决定了客户端与服务器之间的交互方式。 这里讲一下最常用的两种方法——GET 和 POST。 一、GET 方法 GET 方法用于从服务器获取资源。 这就像去图书馆借书——你向图书馆请求一本特定的…