一、命名空间
命名空间:用户自己定义的作用域
作用:对标识符的名称进行本地化,能避免冲突
1.1 命名空间的定义方式
方式一:直接使用
namespace N
{
//变量
//函数
}
方式二:嵌套使用
namespace N
{
// 变量
// 函数
namespace N
{
// 变量
// 函数
}
}
方式三:在一个工程中,可以出现多个相同名称的命名空间
namespace N
{
//变量1
}
namespace N
{
//变量2
}
调用时合并两个N为一个命名空间
1.2 命名空间的成员使用方式
方式一:命名空间名::成员名
:: 作用域运算符
printf("%d\n", a); // 直接使用,优先打印的是函数体局部的变量
printf("%d\n", ::a); // 在变量前两添加::,则打印全局
printf("%d\n",N::a); //打印命名空间内的变量
方式二:using N::a //全局变量
频繁使用变量名时
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
printf("%d\n", N::a);
// 在不冲突的情况下,直接使用
// 可以将a当成当前文件中的全局变量
方式三:using namespace N //N中的所有成员
当前命名空间中多成员都要在当前文件中使用
using namespace N;
// 可以将N命名空间中所有成员当成本文件中的全局变量,命名空间中的成员
// 则可以直接在当前文件中使用 缺陷:容易发生冲突。如果发生冲突,则按照方式一使用即可
二、C++中的输入与输出
C++标准库中定义的内容基本都在std的命名空间中
为了区分与C语言头文件的不同,C++中定义的头文件可以不用加.h
#include<iostream>
using namespace std;
int main()
{
int a;
double b;
char c;
cin>>a>>b>>c;
cout<<"hello world"<<endl;
cout<<"hello\n";
cout<<10<<" "<<12.34<<'A'<<"hello world"<<endl;
return 0;
}
C语言的函数定义不给参数,但在调用时可以传递多个参数
C++中就是语法错误
void func()
{
printf("func()\n");
}
int main()
{
func();
func(10);
func(10, 20);
func(10, 20, 30);
return 0;
}
三、缺省参数
3.1 缺省函数:
C++函数在定义时,可以给形参带默认值
在调用时如果用户没用传递参数,则会使用默认值
如果用户传递了实参,则使用用户传递过来的实参
void func(int a=10,int b=20)
{
printf("%d %d\n",a,b);
}
int main()
{
func();
func(100);
func(100,200);
return 0;
}
3.2 分类:(声明位置)
全缺省函数:所有参数都有默认值
void func1(int a=10,int b=20)
{
printf("%d %d\n",a,b);
}
半缺省函数:部分参数具有默认值,注意:缺省值必须从右往左依次给出
void func2(int a, int b, int c = 30)
{
printf("%d %d %d\n", a, b, c);
}
int main()
{
func2(100, 200);
func2(100, 200, 300);
return 0;
}