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++的学习很陡,时而巨难时而巨简单,希望宝子和小编一起坚持下去~你们的三连是我的动力,感谢支持~