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

欢迎来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.rhkb.cn/news/262902.html

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

相关文章

华为配置WDS手拉手业务示例

配置WDS手拉手业务示例 组网图形 图1 配置WDS手拉手业务示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。但企业考虑到AP通过有线部署的成本较高&#xff0c;所以通过建立…

SpringBoot源码解读与原理分析(三十)AOP模块的生命周期(三)代理对象的底层执行逻辑

文章目录 前言9.6 代理对象的底层执行逻辑9.6.1 DemoService#test9.6.2 获取增强器链9.6.2.1 前置准备9.6.2.2 匹配增强器9.6.2.3 匹配后的处理9.6.2.4 其他增强器的处理 9.6.3 执行增强器9.6.3.1 执行proceed方法9.6.3.2 下标值9.6.3.3 执行第一个增强器9.6.3.4 再次执行proce…

strings.xml补充知识

复数名词 <plurals name"book"><item name"one">book</item><item name"others">books</item> </plurals>int bookCount 4; Resources res getResources(); String bookCount res.getQuantityString(R.…

2.23数据结构

单向循环链表 创建单向循环链表&#xff0c;创建节点 &#xff0c;头插&#xff0c;按位置插入&#xff0c;输出&#xff0c;尾删&#xff0c;按位置删除功能 //main.c #include "loop_list.h" int main() {loop_p Hcreate_head();insert_head(H,12);insert_head(…

如何查看电脑使用记录?保障个人隐私和安全

查看电脑使用记录是了解电脑活动的一种重要方式&#xff0c;可以帮助用户追踪应用程序的使用情况、登录和关机时间、文件的访问记录等。在本文中&#xff0c;我们将介绍如何查看电脑使用记录的三个方法&#xff0c;以分步骤详细说明如何查看电脑使用记录&#xff0c;帮助用户更…

杂题——1097: 蛇行矩阵

题目描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入格式 本题有多组数据&#xff0c;每组数据由一个正整数N组成。&#xff08;N不大于100&#xff09; 输出格式 对于每一组数据&#xff0c;输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角…

如何用Docker+jenkins 运行 python 自动化?

1.在 Linux 服务器安装 docker 2.创建 jenkins 容器 3.根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 4.运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目 5.执行完成之后删除容器 环境准备 Linux 服务器一台(我的是 CentOS7) …

Jmeter之内置函数__property和__P的区别

1. __property函数 作用 读取 Jmeter 属性 语法格式 ${__property(key,var,default)} 参数讲解 小栗子 ${__property(key)} 读取 key 属性如果找不到 key 属性&#xff0c;则返回 key&#xff08;属性名&#xff09; ${__property(key,,default)} 读取 key 属性如果找不到 k…

PHP实现分离金额和其他内容便于统计计算

得到的结果可以粘贴到excel计算 <?php if($_GET["x"] "cha"){ $tips isset($_POST[tips]) ? $_POST[tips] : ; $pattern /(\d\.\d|\d)/; $result preg_replace($pattern, "\t\${1}\t", $tips); echo "<h2><strong>数…

Python流程控制有知道的吗?

流程控制是编程的核心概念之一&#xff0c;Python也不例外。在Python中&#xff0c;程序的流程控制结构主要包括顺序结构、选择结构和循环结构。这些结构让程序员能够更好地组织代码&#xff0c;使其按照特定的逻辑执行。 1.顺序结构 顺序结构是Python中最简单的流程控制结构&…

ELK介绍以及搭建

基础环境 hostnamectl set-hostname els01 hostnamectl set-hostname els02 hostnamectl set-hostname els03 hostnamectl set-hostname kbased -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config systemctl stop firewalld & systemctl disable firewalld# 安…

Unity数据持久化之PlayerPrefs

这里写目录标题 PlayerPrefs概述基本方法PlayerPrefs存储位置实践小项目反射知识补充数据管理类的创建反射存储数据----常用成员反射存储数据----List成员反射存储数据----Dictionary成员反射存储数据----自定义类成员反射读取数据----常用成员反射读取数据----List成员反射读取…

Sora-OpenAI 的 Text-to-Video 模型:制作逼真的 60s 视频片段

OpenAI 推出的人工智能功能曾经只存在于科幻小说中。 2022年&#xff0c;Openai 发布了 ChatGPT&#xff0c;展示了先进的语言模型如何实现自然对话。 随后&#xff0c;DALL-E 问世&#xff0c;它利用文字提示生成令人惊叹的合成图像。 现在&#xff0c;他们又推出了 Text-t…

选择适合你的编程语言

引言 在当今瞬息万变的技术领域中&#xff0c;选择一门合适的编程语言对于个人职业发展和技术成长至关重要。每种语言都拥有独特的设计哲学、应用场景和市场需求&#xff0c;因此&#xff0c;在决定投入时间和精力去学习哪种编程语言时&#xff0c;我们需要综合分析多个因素&a…

在 Jupyter Notebook 中查看所使用的 Python 版本和 Python 解释器路径

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们在做 Python 开发时&#xff0c;有时在我们的服务器上可能安装了多个 Python 版本。 使用 conda info --envs 可以列出所有的 conda 环境。当在 Linux 服务器上使用 which python 命令时&#xff0…

绿盾限制终端网络访问权限会恢复后,别的网站访问正常就是无法访问钉钉网站和下载东西

环境&#xff1a; Win10 专业版 钉钉7.5.5 绿盾7.0 问题描述&#xff1a; 绿盾限制终端网络访问权限会恢复后&#xff0c;别的网站访问正常就是无法访问钉钉网站和下载东西 解决方案&#xff1a; 排查方法 1.重置浏览器或者更换浏览器测试&#xff08;未解决&#xff09…

游戏行业洞察:分布式开源爬虫项目在数据采集与分析中的应用案例介绍

前言 我在领导一个为游戏行业巨头提供数据采集服务的项目中&#xff0c;我们面临着实时数据需求和大规模数据处理的挑战。我们构建了一个基于开源分布式爬虫技术的自动化平台&#xff0c;实现了高效、准确的数据采集。通过自然语言处理技术&#xff0c;我们确保了数据的质量和…

Flutter插件开发指南02: 事件订阅 EventChannel

Flutter插件开发指南02: 事件订阅 EventChannel 视频 https://www.bilibili.com/video/BV1zj411d7k4/ 前言 上一节我们讲了 Channel 通道&#xff0c;但是如果你是卫星定位业务&#xff0c;原生端主动推消息给 Flutter 这时候就要用到 EventChannel 通道了。 本节会写一个 1~…

Maven setting.xml 配置

目的&#xff1a;可以把我们书写的jar包发布到maven私有仓库&#xff0c;简称私仓 1. 打开云效 2.点击 非生产库-snapshot mave release仓库与snapshot仓库区别&#xff1f; 在软件开发中&#xff0c;"Maven release 仓库"和"Maven snapshot 仓库"是两种…

[极客大挑战2019]upload

该题考点&#xff1a;后缀黑名单文件内容过滤php木马的几种书写方法 phtml可以解析php代码&#xff1b;<script language"php">eval($_POST[cmd]);</script> 犯蠢的点儿&#xff1a;利用html、php空格和php.不解析<script language"php"&…