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

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.mrgr.cn/news/67930.html

相关文章:

  • HC-SR04超声波传感器详解(STM32)
  • Perforce《2024游戏技术现状报告》Part2:游戏引擎、版本控制、IDE及项目管理等多种开发工具的应用分析
  • RTC精度及校准
  • 【hdfs】【hbase】【大数据技术基础】实践二 HBase Java API编程
  • 「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用
  • 【JavaSE】【网络原理】初识网络
  • 架构师:如何提高web网站的请求并发响应量?
  • 高速电机精确控制
  • kafka+zookeeper的搭建
  • 【笔记】变压器-热损耗-频响曲线推导 - 04 额定功率处损耗特性
  • 【jmeter】jmeter的线程组功能的详细介绍
  • lua入门教程:ipairs
  • JMM内存模型详解
  • 【wxWidgets GUI设计教程 - 高级布局与窗口管理】
  • 「Mac畅玩鸿蒙与硬件20」鸿蒙UI组件篇10 - Canvas 组件自定义绘图
  • ubuntu18.04 安装与卸载NCCL conda环境安装PaddlePaddle
  • 21-Terms 不正确的案例
  • 创新实践:基于边缘智能+扣子的智慧婴儿监控解决方案
  • 面向对象设计OOD
  • Android 解决Java和Kotlin JDK编译版本不一致异常
  • Jest项目实战(6):搭建文档网站
  • Java 抽象类 详解
  • Javascript常见数据结构及其应用场景
  • 【Chapter 2_ Sentosa_DSML Community Edition Product Features】
  • FPGA实战篇:Moore/Mealy状态机
  • 找不到msvcp140.dll怎么办,总结六种解决msvcp140.dll丢失的方法