【C++】C++入门篇,初识C++----第一个C++结构,C++关键字,命名空间,C++的输入输出,缺省参数【图文详解】

news2024/12/24 2:34:59

欢迎来CILMY23的博客喔,本篇为【C++】C++入门篇,初识C++----第一个C++结构,命名空间,C++的输入输出,缺省参数【图文详解】,深刻理解命名空间,带大家入门C++,感谢观看,支持的可以给个一键三连,点赞关注+收藏。 

 前言

本期系列为新系列【C++】,本篇将带大家从C++发展史开始,认识我们的C++。

目录

1.C++的发展史

1.1 什么是C++?

1.2 C++的发展史 

 2.第一个C++结构 

3.C++关键字

4.命名空间

4.1命名空间的来源

 4.2命名空间的定义

 4.3第一个C++结构的解释

4.4命名空间的三种使用方式

5.C++的输入输出

6.缺省参数

 6.1什么是缺省参数?

6.2缺省参数的分类 

6.3缺省参数总结 


1.C++的发展史

1.1 什么是C++?

 C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言 应运而生。
       1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。 

C++呢兼容C语言,我们C语言的文件是可以在C++上运行的。

1.2 C++的发展史 

 看看百度百科就完事了

C++_百度百科 (baidu.com)

 2.第一个C++结构 

#include<iostream>
using namespace std;

int main()
{
	cout << "hello world" << endl;
}

看不懂没关系,后面学完命名空间我们就能大致了解这个结构的意思了,我们可以先从简单的地方入手,比如关键字。

3.C++关键字

该表格来自:C++ 基本语法 | 菜鸟教程 (runoob.com) 

C++一共有63个关键字,而C语言有32个关键字

4.命名空间

4.1命名空间的来源

在过去C语言的学习中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。

就比如以下这两段代码:

#include<stdio.h>
int rand = 10;

int main()
{
	printf("%d ", rand);
}

结果如下: 

 

我们可以看到屏幕上打印出了10,但是当我们引入了stdlib头文件后,又发生了什么情况呢? 

#include<stdio.h>
#include<stdlib.h>

int rand = 10;

int main()
{
	printf("%d ", rand);
}

 结果如下:

 rand是什么?是一个随机数函数(http://t.csdnimg.cn/FVt6K,六随机数的生成),那么此刻就犯了C语言的麻烦点,命名冲突,那有没有什么办法可以解决这个问题呢,C++提供了一种语法,命名空间。

使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

 4.2命名空间的定义

那命名空间是如何使用的呢? 

#include<stdio.h>
#include<stdlib.h>

namespace CILMY
{
	int rand = 10;
}

int main()
{
	printf("%d ", CILMY::rand);
}

命名空间的使用类似结构体,后面跟上一个 {},这里没有分号,那这段代码如何解释呢? 

如果我们想用命名空间中定义的东西,就必须用到域作用限定符::, 那么在C++当中和C语言当中可不一样,C语言当中我们有全局域和局部域,这两个域会影响生命周期和访问,而命名空间域不影响生命周期,只会影响访问,包括后面也会学习类域。

命名空间可以定义函数,定义结构体

namespace CILMY
{
	int rand = 10;

	int Add()
	{
		//...
	}

	struct Node
	{
		int value;
		//...
	};
}

int main()
{
	printf("%d ", CILMY::rand);
	printf("%d", CILMY::Add());
	struct CILMY::Node phead;
}

 4.3第一个C++结构的解释

4.4命名空间的三种使用方式

 一、展开空间域:

#include<iostream>
using namespace std;

int main()
{
	cout << "hello world" << endl;
}

二、不展开空间域

#include<iostream>

int main()
{
	std::cout << "hello world" << std::endl;
}

 三、展开部分域

#include<iostream>
using std::cout;
using std::endl;

int main()
{
	cout << "hello world" << endl;
}

5.C++的输入输出

#include<iostream>
using namespace std;

int main()
{
	int i = 0;
	cin >> i;
	cout << "hello world" <<'\n'<<i << endl;
}

C++中的输入形式是cin 搭配>>,然后就可以对i进行输入,而输出则是利用cout来进行,endl的作用也类似'\n',换行的一个作用。 

不同的点在于,C++能够自动识别类型,不像C语言当中,我们想要输入还要取地址,输入输出还需要用对应的格式符。

6.缺省参数

 6.1什么是缺省参数?

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

看以下例子就明白了

#include<iostream>
using namespace std;

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


int main()
{
	Func(1);
	Func();
}

如果我们不给函数传参,那么a就会把十打印出来,我们把int a = 10,这样就是给了一个缺省值,或者是默认值。 

6.2缺省参数的分类 

 全缺省参数:

#include<iostream>
using namespace std;

void Func1(int a = 10)
{
	cout << a << endl;
}

void Func2(int a = 10, int b = 20, int c = 30) 
{
	cout << "a = " << a << endl;  
	cout << "b = " << b << endl; 
	cout << "c = " << c << endl;
}

int main()
{
	Func2(1, 2, 3);
	Func2(1, 2);
	Func2(1);
	Func2();
}

我们把Func2这样的叫做全缺省参数 

void Func3(int a, int b, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
}

int main()
{
	Func3(1, 2);
	Func3(1, 2, 3);
}

而像这种我们把它称作半缺省参数,注意参数的对应,是从右向左对应的。

 

6.3缺省参数总结 

1. 半缺省参数必须从右往左依次来给出,不能间隔着给

2. 缺省参数不能在函数声明和定义中同时出现 

3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)

 感谢各位同伴的支持,本期C++入门篇就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞关注+收藏,若有不足,欢迎各位在评论区讨论。   

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

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

相关文章

灌水:powershell 练习正则表达式

亲爱的读者们&#xff0c;请展示你们的能力&#xff1a;解析&#xff08;使用代码&#xff09;解析以下字符串 <鱼龙混杂的奇葩文件#> UI1|System.Windows.Forms.linklabel #创建用户对象 1.location.250.250 1.text.磁盘清理 1.autosize #自适应大小 #存在混淆风险…

队列的基本操作——常见队列的对比分析(c语言完整代码包含注释)

目录 一、队列 1.1基本概念 1.2基本操作 1.3 队列分类 1.3.1带头队列 1.3.2不带头队列 1.3.3 循环带头队列 1.3.4 循环不带头队列 1.3.5 总结 二、代码实现 2.1带头队列 2.2不带头队列 2.3循环带头队列 2.4循环不带头队列 一、队列 1.1基本概念 队列&#xff08…

85、字符串操作的优化

上一节介绍了在模型的推理优化过程中,动态内存申请会带来额外的性能损失。 Python 语言在性能上之所以没有c++高效,有一部分原因就在于Python语言将内存的动态管理过程给封装起来了,我们作为 Python 语言的使用者是看不到这个过程的。 这一点有点类似于 c++ 标准库中的一些…

VegaPrime 2013 VP2013

Vega Prime 2013 VegaPrime 2013 VP2013

并发编程(2)管程(悲观锁)

4 共享模型之管程 本章内容 共享问题synchronized线程安全分析Monitorwait/notify线程状态转换活跃性Lock 4.1 共享带来的问题 4.1.1 小故事 老王&#xff08;操作系统&#xff09;有一个功能强大的算盘&#xff08;CPU&#xff09;&#xff0c;现在想把它租出去&#xff…

Linux(ACT)权限管理

文章目录 一、 ATC简介二、 案例1. 添加测试目录、用户、组&#xff0c;并将用户添加到组2. 修改目录的所有者和所属组3. 设定权限4. 为临时用户分配权限5. 验证acl权限 6. 控制组的acl权限 一、 ATC简介 ACL&#xff08;Access Control List&#xff0c;访问控制列表&#xf…

运维SRE-15 自动化批量管理-ansible1

## 1.什么是自动化批量管理重复性工作与内容: 思考如何自动化完成. 部署环境,批量查看信息,批量检查:自动化 一般步骤:1.如何手动实现2.如何自动化管理工具&#xff0c;批量实现3.注意事项&#xff1a;想要自动化一定要先标准化(所有环境&#xff0c;软件&#xff0c;目录一致)…

Vant轮播多个div结合二维数组的运用

需求说明 在开发H5的时候&#xff0c;结合Vant组件的轮播组件Swipe实现如下功能。我们查阅vant组件库官方文档可以得知&#xff0c;每个SwipeItem组件代表一个卡片&#xff0c;实现的是每屏展示单张图片或者单个div轮播方式&#xff0c;具体可以查阅&#xff1a;Vant 2 - 轻量、…

springboot750人职匹配推荐系统

springboot750人职匹配推荐系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建

前言 前面的章节我们介绍了一些值得推荐的Blazor UI组件库&#xff0c;通过该篇文章的组件库介绍最终我选用Ant Design Blazor这个UI框架作为ToDoList系统的前端框架。因为在之前的工作中有使用过Ant Design Vue、Ant Design Angular习惯并且喜欢Ant Design设计规范和风格&…

学生成绩管理系统(C语言课设 )

这个学生成绩管理系统使用C语言编写&#xff0c;具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中&#xff0c;并提供了多种功能&#xff08;增删改查等&#xff09;选项以满足不同的需求。 学生成绩管理系统功能: 显示学生信息增加学生信息删除学生信息…

如何解决服务器之间大量数据文件传输交换慢的问题?

在信息化时代&#xff0c;企业运营的核心之一便是服务器间的数据交换效率。数据流通的速度直接关系到业务的响应速度和企业的整体表现。然而&#xff0c;数据传输速度缓慢的问题时常成为企业发展的绊脚石&#xff0c;可能导致严重的业务损失。本文将深入探讨造成服务器数据传输…

【MySQL】如何理解索引(高频面试点)

一、前言 首先这个博客会介绍一些关于MySQL中索引的基本内容以及一些基本的语法&#xff0c;当然里面也会有些常见的面试题的解答。 二、关于索引 1、概念 索引是一种能够帮助MySQL高效的去磁盘检索数据的一种数据结构。在MySQL的Innodb存储引擎中呢&#xff0c;采用的是B树的…

software framwork

software framwork软件架构 软件架构&#xff0c;之前图没找到&#xff0c;随手画了一个啦&#xff0c;了解架构细分职能和工作任务&#xff1a; 下图&#xff0c;第一是客户端架构包项目&#xff0c;第二是服务端架构包项目 -----------------------------------------------…

Thymeleaf无法显示模板视图,加载页面显示404状态问题的解决方法

本篇文章主要讲解&#xff1a;Thymeleaf无法显示模板视图&#xff0c;加载页面显示404状态问题的解决方法 日期&#xff1a;2024年2月23日 作者&#xff1a;任聪聪 现象说明&#xff1a; 1.只返回输出模板的名称&#xff0c;如图&#xff1a; 2.显示报错信息&#xff1a; Whi…

数字化转型导师坚鹏:县域数字化转型案例研究

县域数字化转型案例研究 课程背景&#xff1a; 很多县级政府存在以下问题&#xff1a; 不清楚县域数字化转型的发展模式 不清楚县域数字化转型的成功案例 课程特色&#xff1a; 针对性强 实用性强 创新性强 学员收获: 学习县域数字化转型的发展模式。 学习县…

129.乐理基础-曾音程、减音程、等音程

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;128.乐理基础-五线谱-纯四度、纯五度-CSDN博客 上一个内容里练习的答案&#xff1a; 首先c1-重降e1&#xff0c;c1-升e1的时候&#xff0c;也都是三度&#xff0c;但距离肯定不一样这时该叫什么&#xff1f;如下图…

【Ucore 操作系统】3. 多道程序与分时多任务

文章目录 【 0. 引言 】0.1 上章回顾0.2 背景0.3 协作式操作系统0.4 抢占式操作系统0.3 进程小述0.3 本章任务 【 1. 多道程序放置与加载 】1.1 多道程序的放置1.2 多道程序的加载 【 2. 进程基础结构 】2.1 进程的概念2.2 进程的基本管理2.3 进程的分配 【 3. 多道程序与协作式…

开发个IDEA插件

开发IDEA一个插件&#xff0c;但是这个插件的功能是个大杂烩吧&#xff0c; 主要完成以下几个功能&#xff0c;方便组内开发人员提高效率。 1 网关会传过来登录人员的 一些核心字段&#xff0c;公司编码/用户编号/主岗。 因为存在多租户&#xff0c;所以经常要切换任务&…

【PostgreSQL】Windows安装PostgreSQL数据库图文详细教程

Windows安装PostgreSQL数据库图文详细教程 一、前言二、PostgreSQL简介三、软件下载四、安装步骤4.1 安装向导4.2 选择安装目录4.3 选择组件4.4 选择数据存放目录4.5 选择密码4.6 选择端口号4.7 等待安装完成4.8 取消勾选&#xff0c;安装完成 五、启动教程5.1 搜索pgAdmin4&am…