今日名言:
因做过的事引起的后悔会被时间慢慢抚平,为没做过的事产生的后悔却会一直难以释怀
前言:
c++是在C语言基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式。
在C++入门中,我们将补充C语言语法的不足,以及C++是如何队C语言设计不合理的地方进行优化的的
一.命名空间
在C++中,函数,变量和后面要学到的类都是大量存在的,这些变量、函数和类的名称都存在于全局作用域中,可能会导致很多冲突。那么为了避免这种情况的发生,就出现了命名空间,namespace关键字的出现就是针对这一问题的。使用命名空间的目的是对标识符名称进行本地化,以免命名冲突或名字污染。
从上图我们可以看到,C语言是没有这一功能的,但是C++是有的。
命名空间的作用
1.在命名空间中,可以定义变量,函数,和结构体,但是需要注意的是,与结构体不同,命名空间的最后不是以分号结尾的。
2.命名空间可以嵌套
3.命名空间可以重名,同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间。
需要注意的是,一个命名空间就定义了一个作用域,命名空间中的所有内容局限在该命名空间中。
那么命名空间该如何使用呢?
命名空间的使用
1.加命名空间名称及作用域限定符 (指定访问)
2.使用using将命名空间中的某个成员引入(展开某个)
3.使用using namespace将命名空间名称引入(展开全部)
C++的输入与输出
你可能已经用习惯了C语言中的printf和scanf,但是人们总是想省事一点的,如果我现在告诉你,C++中的输入和输出可以自动判定数据类型,不需要像printf和scanf一样麻烦,你会不会果断的抛弃他们呢?
使用说明书
1.使用cout标准输出对象和cin标准输入对象时,必须包含<iostream>头文件,并按命名空间使用方法使用std
2.cout和cin是全局的对象流,endl是特殊的C++符号,表示换行输出,他们都包含在<iostream>头文件中
3.<<是流插入运算符,>>是流提取运算符
4.使用cout和cin时,不需要手动控制格式,他们可以自动识别变量的类型
具体使用
#include<iostream>
using namespace std;
int main() {
int a;
int b;
cin >> a;
cin >> b;
cout << a << endl;
cout << b << endl;
cout << a<<"\n";
cout << b << "\n";
return 0;
}
缺省参数
缺省参数,又称默认参数,是在声明和定义函数时为函数的参数指定的一个缺省值。在调用函数时,如果没有指定实参则采用该参数的缺省值,否则使用指定的实参。就是你有我就默默站在背后,你没有的时候我就出来帮助你,有点像备胎的感觉,所以你也可以叫他备胎参数(开个玩笑)。
全缺省参数
对于全缺省参数而言,我们对函数的每一个参数都进行了默认值的设置。
半缺省参数
这里我们可不能顾名思义,这个并不是对一半的参数进行默认值的设置,只要是对一个或以上进行默认值设置,就属于半缺省参数。
但是需要注意的是:
1.半缺省参数必须从右至左依次给出(但是传参的时候是从左到右传的),并且不能跳着传默认参数
2. 缺省参数不能在函数声明和函数定义中同时出现,当函数声明和定义在不同文件时,一般对函数的声明进行缺省参数。
3.缺省参数必须是全局变量或者常量
4.C语言不支持缺省参数(编译器不支持)
//a.h
void Fun(int a = 10);
//a.c
void Fun(int a = 20) {
}
如果声明和定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用哪个缺省值。