当前位置: 首页 > article >正文

C++从零到满绩——命名空间、输入输出and缺省参数

目录

​编辑

1>>前言

2>>C++的发展历史

2.1>>C++的版本更新

3>>C++语法的参考文档

4>>C++的第一个文件

 5>>命名空间namespace

5.1>>命名空间的使用

6>>输入输出流

7>>缺省/默认参数

8>>结语


1>>前言

        数据结构初阶的内容已经全部更新完毕,还没看完的欢迎移步个人主页查看,数据结构进阶内容估计要等待到明年的寒假更新了,现在先重点更新C++的内容。

从今天开始,小编将会带着大家从零追C++满绩,保底4-5个月更新完毕,希望大家能跟着小编持续学习,小编会一直分享干货和学习笔记祝大家学有所成。话不多说,准备上高速。

另外:如果有觉得小编哪里需要改进的欢迎指出,做出完美的C++篇章肯定少不了各位精神股东的支持啦,谢谢大家~

2>>C++的发展历史

        C++的起源非常早。从1979年开始,Bjarne Stroustrup本贾尼·斯特劳斯特卢普,翻译可能有不同,影响不大)在贝尔实验室进行研究的时候,感觉C语言美中不足(在表达能力可维护性可拓展性等一些方面有些许不足之处)那这个大佬就不太满意,它想让这个语言更加完善,就在1983年添加了面向编程特性,设计出了C++雏形,此时C++已经有了类、封装、继承等核心概念。也在这一年被正式命名为C++,下面是本贾尼的相片,请学C++的宝子记住他~

2.1>>C++的版本更新

        C++基本每隔3年进行一次版本更新,在下图中,98、11、20表示大更新,增加了许多东西,其他则是微小的更新,目前许多企业和比赛都是使用C++98和11,因为它们更加稳定。

3>>C++语法的参考文档

Reference - C++ Reference

https://zh.cppreference.com/w/cpp

https://en.cppreference.com/w/

第一个:个人感觉比较好用,以头文件形式呈现,方便我们查找和阅读

第二个:官方的中文版,信息很全

第三个:官方的英文版

建议结合使用,第一个找不到,去第二个查看~

4>>C++的第一个文件

        C++向下兼容C语言,因此C语言的第一个文件hello word也是C++的第一个文件,只需要更改它的后缀名,也就是.cpp

#include<stdio.h>

int main()
{
	printf("hello word");
	return 0;
}

当然C++有自己的写法,如下:

#include<iostream>

using namespace std;

int main()
{
	cout << "Hello word" << endl;
	return 0;
}

 5>>命名空间namespace

        在C/C++中,变量、函数同名有很多,这些变量、函数名称将都存在于全局作用域中,可能会导致冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突,而namespace关键字的出现可以解决

来看看不使用的情况:

可以看到下面报错了,意思就是说rand全局有两个一个是变量一个随机函数rand,编译器不知道要用哪个。

那么就可以使用namespace避免:

将rand=1包括在feng这个命名空间内,这里可以看作一个main内也有一个域,全局也是一个域,当找到这个变量名or函数名时,先在局部域找,然后再去全局域中找,因为feng自成一个域,所以rand只找到了全局域中的rand,也就是随机函数,直接打印函数名就是一个地址,因此打印的是rand的地址。

那我想用变量rand怎么办?只需要在rand前面加feng::表示feng空间中的某个变量、函数。

5.1>>命名空间的使用

1.指定命名空间访问,项目中经常使用,也就是feng::rand这种。

2.using将成员展开,假设我经常调用交换函数swap,但是不想每次指定命名空间,那就进行部分展开,using feng::swap;这样的方式可以让swap不用每次指定命名空间,项目中经常访问不冲突成员使用这种方式,较为方便。

3.全展开,冲突风险大,日常练习和比赛中常用。(C++中的头文件也是一个巨大的命名空间,所以需要使用using namespace std;展开,否则每次都要加上std::巨麻烦)

6>>输入输出流

        C++的输入输出需包含头文件<iostream>,是标准输入输出流库,std::cin(若有using namespace std;就不需要std)是标准输入流,比scanf稍微高级点,不需要指定变量类型,它会自行转换,一般配合>>(流提取运算符也是右移操作符)使用。std::cout是标准输出流,也比printf高级,不需要指定变量类型,一般配合<<(流插入运算符也是左移操作符)使用。

还有std::endl比较复杂,暂且把它看作一个换行符‘\n’使用,下面附上一段代码方便宝子们理解。运行结果也贴在下面:

#include<iostream>

using namespace std;

int Add(int a = 10, int c = 10) {
	return a + c;
}
int main()
{
	int a = 1;
	double b = 2.22;
	cout << a << ' ' << b;
	cout << endl;
	cout << a << "feng" << b<<endl;
	cout<<Add(a);
}

函数Add不懂,不急下面就来讲缺省参数~

7>>缺省/默认参数

        在这行代码中,a的默认参数就是10,也就是当函数没给a传参时,函数内的a值就是10。在下图中,c没进行传参,所以能看到,结果是11,也就是传进来a的1加上c默认值10,结果为11。

上述为全缺省参数,还有半缺省参数半缺省参数也就是只给函数中的一两个参数赋值默认值,但必须是从右往左依次赋值默认值。

8>>结语

        今日份C++入门就先到这里啦,来总结一下:主要讲了命名空间、C++的第一个文件、输入输出流还有默认参数的概念和用法,感兴趣的宝子们欢迎持续订阅小编,小编在这里谢谢宝子们啦~C++的学习很陡,时而巨难时而巨简单,希望宝子和小编一起坚持下去~你们的三连是我的动力,感谢支持~


http://www.kler.cn/a/384211.html

相关文章:

  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,
  • 书生第四期实训营基础岛——L1G2000 玩转书生「多模态对话」与「AI搜索」产品
  • 【Python】强大的正则表达式工具:re模块详解与应用
  • 【LeetCode】【算法】283. 移动零
  • 基于CNN-LSTM的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码
  • Edge浏览器打开PDF无法显示电子签章
  • Selenium 高频面试题及答案
  • Java中的远程方法调用——RPC详解
  • solo博客源码使用idea编译运行
  • 信息安全工程师(81)网络安全测评质量管理与标准
  • 关于vue3-router的基础知识点以及注意事项
  • C++ lambda 匿名函数
  • Foundry 单元测试
  • 15分钟学 Go 第 37 天:综合复习与小项目
  • Flutter鸿蒙next 的 Sliver 实现自定义滚动效果
  • .Net WeekOfYear 获取日期所属于一年中的第几周
  • Docker是什么
  • tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸
  • 【Axure高保真原型】2级下钻条形图
  • 沈阳乐晟睿浩科技有限公司抖音小店强者之路
  • 跨境云专线:构建高速、安全的全球业务网络
  • k8s之Kruise Rollouts灰度发布
  • 面相小白的php反序列化漏洞原理剖析
  • C++循环引用
  • 重载(overload)和重写(override)的区别
  • 智慧地下采矿可视化平台