1.命名空间
1.1命名空间定义
定义:在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
namespaces(命名空间):定义命名空间(私有)
namespaces pop{//一般开发中用项目名字做命名空间名
int rand = 0;
}
1.2命名空间使用
namespace pop
{
int a = 0;
int b = 1;
int Add(int left, int right)
{
return left + right;
}
}
int main()
{
printf("%d\n", a);
return 0;
}//编译报错
命名空间有三种使用方式:
1.域作用限定符
int main()
{
printf("%d\n", N::a);
//到指定空间去查找
return 0;
}
2.使用using将命名空间中某个成员引入
using N::b;
//指定展开某一个
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}
3.使用using namespace命名空间名引入
using namespce N;
//展开命名空间
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
Add(10, 20);
return 0;
}
ps:命名空间域修饰全局不影响生命周期,局部域和全局域影响声明周期。
2.C++输入和输出
2.1头文件
在C语言中我们要想实现输入和输出,我们需要引用头文件,在C++中同样需要,在C++代码中我们经常看见C++代码的开始有我们常见的include开头的一行代码这个是我们学过的引用头文件,还要一行是我们刚刚了解过的using namespace展开命名空间,这个并不属于头文件,但是我们在很多C++代码中都会看到他
//头文件
#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
2.2输出和输入
1.在C语言中我们学过输出,是使用printf这个在C++中我们也是兼容的,只是需要我们引用头文件 stdio.h。在C++中我们接触到一个新的输出就是cout这其中C的完整单词是console他的意思是控制台,out就是输出在控制台输出就组成了我们C++的输出语。同理我们就能理解C++的输入cin了。
2.与cout和cin两个同时出现的>>和<<我们在C语言中也学过,代表移位操作符,在C++中我们>>表示流插入运算符,<<表示流提取运算符。
3.使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。
#include <iostream>
using namespace std;
int main()
{
int a;
double b;
char c;
// 可以自动识别变量的类型
cin>>a;
cin>>b>>c;
cout<<a<<endl;//特殊符号表示换行,同理\n
cout<<b<<" "<<c<<endl;
return 0;
}
3.缺省参数
3.1概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。
void Func(int a = 0)
{
cout<<a<<endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值
Func(10); // 传参时,使用指定的实参
return 0;
}
3.2分类
1.全缺省参数
void Func(int a=10,int b=20,int c=30)
{
cout<<"a="<<a<<endl
cout<<"b="<<b<<endl
cout<<"c="<<c<<endl
cout<<"d="<<d<<endl
}
int mian()
{
Func(1,2,3);
Func(1,2);//必须顺序传参,不能跳跃传。
}
2.半缺省参数
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}//只能从右往左缺省