C++基础语法

目录

一、命名空间

1.1 什么是命名空间

1.2 命名空间的定义

1.3 命名空间的使用

二、输入输出流

三、缺省参数

四、函数重载

五、内联函数


        C++是一种通用的编程语言,具有面向对象、泛型编程和低级内存操作等特性。它是由Bjarne Stroustrup在20世纪80年代初开发的,旨在扩展C语言的功能,使其更适合大型系统和复杂项目的开发。C++兼容C语言语法,本文介绍C++独有的语法。

一、命名空间

1.1 什么是命名空间

在C/C++中,变量、函数⼤量存在,这些变量、函数的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突。

1.2 命名空间的定义

namespace 空间名
{

}
//注意末尾没有分号

说明

  1. 命名空间中可以定义变量/函数/类型
  2. 命名空间支持嵌套定义
  3. namespace只能定义在全局
  4. 多个文件定义的同名namespace编译器自动合并,不会发生冲突
  5. C++标准库都放在⼀个叫std(standard)的命名空间中。

1.3 命名空间的使用

编译器查找⼀个变量的声明或者定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。要使⽤命名空间中定义的变量/函数,有以下三种⽅式:

  • 指定命名空间访问——作用域限定符::
    namespace paradiso
    {
    	int a = 1;
    	int b = 2;
    }
    
    int main()
    {
    	printf("%d\n", paradiso::a);
    	return 0;
    }
  • using将命名空间中的成员展开——using+空间名+限定符+域中变量
    namespace paradiso
    {
    	int a = 1;
    	int b = 2;
    }
    
    using paradiso::b;
    
    int main()
    {
    	printf("%d\n", b);
    	return 0;
    }
  • 展开命名空间的全部成员——using+namespace+空间名
    namespace paradiso
    {
    	int a = 1;
    	int b = 2;
    }
    
    using namespace paradiso;
    
    int main()
    {
    	printf("%d\n", b);
    	printf("%d\n", a);
    	return 0;
    }

二、输入输出流

  1. <iostream> 是 Input Output Stream 的缩写,是标准的输⼊、输出流库。注意没有.h
  2. <<是流插⼊运算符,>>是流提取运算符。
  3. cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,要通过命名空间的使⽤⽅式去⽤他们。
  4. 比起C语言的优势:自动识别变量类型
#include<iostream>

using namespace std;

int main()
{
	int a = 0;
	double b = 0;
	char c = 0;
	float d = 0;

	cin >> a >> b >> c >> d;
	cout << a << " " << b << " " << c << " " << d << " " << endl;

	return 0;
}

 

三、缺省参数

缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时,如果没有指定实参
则采用该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。

#include<iostream>

using namespace std;

void Func(int a = 0)
{
	cout << a << endl;
}

int main()
{
	Func();
	Func(2);
	return 0;
}

全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。

带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

#include<iostream>

using namespace std;
//全缺省
void Test1(int a = 1, int b = 2, int c = 3)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
//半缺省
void Test2(int a, int b = 2, int c = 3)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}
int main()
{
	Test1();
	cout << endl;
	Test1(10);
	cout << endl;
	Test1(10, 20);
	cout << endl;
	Test1(10, 20, 30);
	cout << endl;
	Test2(100);
	cout << endl;
	Test2(100, 200);
	cout << endl;
	Test2(100, 200, 300);
	return 0;
}

四、函数重载

由于C语⾔不⽀持同⼀作⽤域中出现同名函数,比如在写一个加法函数时,不同类型的加法需要写多个不同名的函数。C++通过函数重载来解决这个问题

函数重载的两同三不同

相同:

  1. 函数名相同
  2. 作用域相同

不同:

  1. 参数类型不同
    int Add(int left, int right)
    {
        return left + right;
    }
    double Add(double left, double right)
    {
        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;
    }

五、内联函数

内联函数解决的是C语言中宏函数易错难写的问题。⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数。

#include<iostream>
using namespace std;
inline int Add(int x, int y)
{
	int ret = x + y;
	return ret;
}
int main()
{
	int ret = Add(1, 2);
	cout << Add(1, 2) * 5 << endl;
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea集成本地tomcat

由于网课老师使用的是eclipse,但是……本人用的是idea,所以不得不去找教程。 解决方案1&#xff1a; https://blog.csdn.net/weixin_54048131/article/details/131359793 这个地方&#xff0c;路径一定要到这个tomcat 否则不识别&#xff1a; 这里的JRE也要配置一下 新问题&…

VBA初学:零件成本统计之四(汇总计算)

第四步&#xff0c;最后进行汇总计算 汇总统计的计算 Sub count() Dim rng As Range Dim i As Long, j As Long Dim arr_s, arr, brr, crr, drr Dim rowscount As Long Dim X As Variant Dim rg As Single, xb As Single, zj As SingleMsgBox "汇总计算时间较久&#xff…

24吉林事业单位报名照上传通过别忘了这一步

24吉林事业单位报名照上传通过别忘了这一步 #吉林事业单位 #吉林三支一扶 #吉林事业编 #事业单位报名照片 #吉林事业单位考试 #吉林市事业单位

需求分析|泳道图 ProcessOn教学

文章目录 1.为什么使用泳道图2.具体例子一、如何绘制确定好泳道中枢的角色在中央基于事实来绘制过程不要纠结美观先画主干处理流程再画分支处理流程一个图表达不完&#xff0c;切分子流程过程数不超25 &#xff0c;A4纸的幅面处理过程过程用动词短语最后美化并加上序号酌情加上…

Java--instanceof和类型转换

1.如图&#xff0c;Object&#xff0c;Person&#xff0c;Teacher&#xff0c;Student四类的关系已经写出来了&#xff0c;由于实例化的是Student类&#xff0c;因此&#xff0c;与Student类存在关系的类在使用instanceof时都会输出True&#xff0c;而无关的都会输出False&…

双色球 | python

1. 玩法规则 “双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1—33 中选择&#xff0c;蓝色球号码从 1—16 中选择。 球的数字匹配数量和颜色决定了是否中奖。 2. 需求 生成本期双色球中奖号码。&#xff08;注意&#xff1a;1.生成的红球随机有…

光学传感器图像处理流程(一)

光学传感器图像处理流程&#xff08;一&#xff09; 1. 处理流程总览2. 详细处理流程2.1. 图像预处理2.1.1. 降噪处理2.1.2. 薄云处理2.1.3. 阴影处理 2.2. 辐射校正2.2.1. 辐射定标2.2.2. 大气校正2.2.3. 地形校正 2.3. 几何校正2.3.1. 图像配准2.3.2. 几何粗校正2.3.3. 几何精…

Python神经模型评估微分方程图算法

&#x1f3af;要点 &#x1f3af;神经网络映射关联图 | &#x1f3af;执行时间分析 | &#x1f3af;神经网络结构降维 | &#x1f3af;量化图结构边作用 | &#x1f3af;数学评估算法实现 &#x1f36a;语言内容分比 &#x1f347;Python随机梯度下降算法 随机梯度下降是梯度…

【Python实战因果推断】18_线性回归的不合理效果8

目录 Saturated Regression Model Regression as Variance Weighted Average Saturated Regression Model 还记得我在本章开头强调回归和条件平均值之间的相似性吗&#xff1f;我向你展示了使用二元干预进行回归与比较干预组和对照组的平均值是完全一样的。现在&#xff0c;由…

逆向分析之电脑端如何调试一些只能手机端浏览器才可以打开的网站

手机端浏览器的指纹和电脑端浏览器的指纹是不同的,这样只在手机端浏览器运行的网站则可以检测网站是否满足手机端浏览器指纹的要求,不满足则可以进行一些反爬措施。 例如一些公众号,其实就是使用手机端浏览器打开的H5网站,就可以进行手机端浏览器指纹检测。 这里只是讲解下…

昇思MindSpore学习总结十二 —— ShuffleNet图像分类

当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 1、ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达…

STM32基础篇:AFIO × 查表重映射 × AFIO库函数

AFIO简介 AFIO&#xff0c;直译为&#xff1a;复用输入输出&#xff0c;是STM32上众多的片上外设之一&#xff1b;我们知道当IO引脚复用功能冲突时&#xff0c;可以通过重映射来解决这个问题&#xff0c;而AFIO就是专门用来执行"复用功能的重映射"的模块&#xff08…

Mac电脑上有什么好玩的肉鸽游戏推荐 苹果电脑怎么玩以撒的结合

Mac电脑尽管在游戏兼容性上可能不及Windows。但是&#xff0c;对于喜欢在Mac上游玩的玩家来说&#xff0c;依然有不少优秀的游戏可以选择&#xff0c;尤其是那些富有挑战性和策略性的肉鸽游戏。此外&#xff0c;对于经典游戏《以撒的结合》&#xff0c;Mac平台也提供了良好的游…

模拟考试小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;科目管理&#xff0c;复习资料管理&#xff0c;参考文献管理&#xff0c;用户管理&#xff0c;留言板管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;复习资料&#xf…

2017年,我成为了技术博主

2017年9月&#xff0c;我已经大三了。 >>上一篇&#xff08;爪哇&#xff0c;我初窥门径&#xff09; 我大二学了很多java技术&#xff0c;看似我一会就把javaweb/ssh/ssm这些技术栈给学了。 这些技术确实不难&#xff0c;即便是我&#xff0c;我都能学会&#xff0c;…

C# Bitmap类型与Byte[]类型相互转化详解与示例

文章目录 一、Bitmap类型转Byte[]类型使用Bitmap类的Save方法使用Bitmap类的GetBytes方法 二、Byte[]类型转Bitmap类型使用MemoryStream将Byte[]数组转换为Bitmap对象使用System.Drawing.Imaging.BitmapImage类 总结 在C#编程中&#xff0c;Bitmap类型和Byte[]类型之间的相互转…

思维+数学,CF 1138B - Circus

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1138B - Circus 二、解题报告 1、思路分析 设第一组会小丑和杂技的人数分别为x1, y1 第二组会小丑和杂技的人数分别为x2, y2 显然根据要求有&#xff1a; x1 y2 > x1 x2 x2 y2 上式说明第二组每…

下拉框模糊搜索 输入框中的值映射不上去的问题

强制更新 Element-ui中el-select选择器实现输入和搜索&#xff0c;可显示输入值的详细讲解_el-select可输入可选择-CSDN博客https://blog.csdn.net/qq_63438013/article/details/134512480 <el-select keyup.enter.native"handleQuery" blur"selectBlur&qu…

HNU小学期BSP软件编程基础十道测试题

http://t.csdnimg.cn/Yv0R1 文章参考了这位大佬的代码&#xff0c;在他的基础上进行了纠错、完善等处理。 配置 编程前的准备工作按大佬的流程即可&#xff0c;稍有不同的是学习通课程网站的资料里没有头文件的整个压缩包了&#xff0c;但我们可以下载某个BSP版的工程文件&am…

北京大学长安汽车发布毫米波与相机融合模型RCBEVDet:最快能达到每秒28帧

Abstract 三维目标检测是自动驾驶中的关键任务之一。为了在实际应用中降低成本&#xff0c;提出了利用低成本的多视角相机进行3D目标检测&#xff0c;以取代昂贵的LiDAR传感器。然而&#xff0c;仅依靠相机很难实现高精度和鲁棒性的3D目标检测。解决这一问题的有效方法是将多视…