文章目录
命名空间 输入输出 缺省参数 引用返回
命名空间
关键字 namespace
1普通命名空间
namespace N1//N1为名称
{
int a;/既可以定义变量也可以定义函数
int Add(int left,int right)
{
return left+right;
}
}
2命名空间可以嵌套使用
namespace N1//N1为名称
{
int a;
int Add(int left,int right)
{
return left+right;
}
namespace N2{
int b1;
int Add1(int left,int right)
{
return left+right;
}
}
}
3同一个工程中允许存在多个相同名称的命名空间,编译器后会合成同一个命名空间中
一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
#include <iosteam>//头文件
using namespace std:
cout<<"hello world"<<endl;
命名空间的使用
namespace N
{
int a=0;
int b=1;
int c=2;
}
第一种:在要使用的地方加上命名空间用“::”作为标识符
int main()
{
printf("%d \n",N::a) ;
return 0;
}
第二种:使用using讲命名空间中成员引入
using N::b;
int main()
{
printf("%d \n",N::a) ;
printf("%d \n",b) ;
return 0;
}
第三种:使用using namespace 将命名空间引入
using N;
int main()
{
printf("%d \n",a) ;
printf("%d \n",b) ;
return 0;
}
为什么引入命名空间
在我们平时练习当中代码量并不是很多因此命名空间的作用就不是很大,但是在做一个工程项目时,都是多人分工完成项目的各个代码文件,比如现在一个项目有a、b、c三个人共同完成,a需要写项目的main.c,b需要写test.c,c需要写driver.c。假设代码非常的多,在汇合的时候,就很可能因为变量或者函数名称相同而引起报错,但是如果加上命名空间就不会了。假设三人中都有一个函数叫add();那么加上命名空间就能够很好的解决这个问题。
a::add();
b::add();
c::add();
输入输出
#include<iostream>
using std namespace;
//using std::cout;
//using std::endl;
int main()
{
cout<<"hello world"<<endl;
return 0;
}
说明使用c++标准输入cin(键盘)输出cout(控制台) 必须包含文件以及std标准命名空间
注:c++旧式的头文件保留了.h后缀,但新式的c++中都是没有后缀的。c++中保留了部分老式c语言的.h头文件也将一部分转换为了没有.h后缀的头文件。
##几种输出例子
#include<iostream>
using std namespace;
int main()
{
int a;
double b;
char c;
cin>>a;
cin>>b;
cin>>c;
cout<<a<<endl;
cout<<b<<" "<<c<<endl;
return 0;
}
endl相当于"\n"
cin的箭头>>可以理解为 cin输入流从键盘获取键值再传给变量abc , cout类似;
缺省参数
缺省参数的概念
在函数的定义或者声明时给形参设定一个默认值,在调用改函数时没有传实参就采用该默认值这个情况叫做缺省参数
void func(int a=0)
{
return 2;
}
int main()
{
func();
return 0;
}
缺省参数的分类
全缺省参数
void Func1(int a=10 , int b = 20 , int c = 30)//全缺省
{
cout <<a<<endl;
cout <<b<<endl;
cout <<c<<endl;
}
函数所有参数可以缺省
调用如下
int main()
{
Func1();
Func1(1);
Func1(1,2);
Func1(1,2,3);
return 0;
}
全缺省参数在调用传参时必须从左到右传参,右边可以省略
错误传参方式
```Func1(,3);
Func1(,2,);
### 半缺省参数
```python
void Func2(int a , int b = 20 , int c = 30)
{
cout <<a<<endl;
cout <<b<<endl;
cout <<c<<endl;
}
对部分参数进行缺省,且必须从右往左
错误的半缺省参数如下
void Func2(int a=10 , int b = 10 , int c )
{//错误的半缺省参数
cout <<a<<endl;
cout <<b<<endl;
cout <<c<<endl;
}
半缺省参数调用时
int main()
{
Func2(1);
Func2(1,2);
Func2(1,2,3);
Func2(1,,3);//<-这种会报错
return 0;
}
缺省参数需要注意的点
- 半缺省参数必须从右往左声明缺省
- 缺省参数不能再函数的声明与定义中同时出现
- 缺省参数必须是常亮和全局变量
- c语言不支持缺省参数(编译器不支持)