初识C++
- 命名空间
- namespace关键字
- 命名空间的使用
- 缺省参数
命名空间
namespace关键字
在C++中,为了尽可能避免命名冲突,需要对各个变量进行域作用限定,这就需要使用到namespace关键字,namespace可以定义一个命名空间,即命名空间域,而这个域与全局域是相互独立的,不同的域可以定义同名变量,从而避免命名冲突
例:
//h 是命名空间的名字
//这里需要注意区分,命名空间定义的括号最后不需要加分号,而结构体需要
namespace h
{int a = 10;//在命名空间中定义变量//在命名空间中定义函数int ADD(int x, int y){return x + y;}//在命名空间中定义结构体struct stu{//......};//命名空间可以嵌套定义namespace w{//......}
}
需要注意的是,C++的标准库都存放在 std 这一命名空间中
命名空间的使用
命名空间的使用有三种方式
- 指定命名空间访问,这里需要用到一个操作符 :: ,这是域作用限定符,在项目中一般推荐使用这种方式,例:
int main()
{int a = 20;cout << "main函数中的a: " << a << endl;cout << "命名空间中的a: " << h::a << endl;//这里采用了上例中的 areturn 0;
}
输出结果如下
- 使用using将命名空间中的某个成员展开,这样方便直接使用,例:
//使用using将h中的a变量展开
using h::a;int main()
{int b = 20;cout << "main函数中的a: " << b << endl;cout << "命名空间中的a: " << a << endl;//此时可以直接访问return 0;
}
结果如下:
3.使用using将命名空间全部展开,即
using namespace h;
这种方式容易导致命名冲突,项目中一般不推荐
缺省参数
缺省参数是指在函数声明或定义是为参数指定一个初始值,在调用函数时,如果没有指定参数值便默认为缺省值,缺省参数分为全缺省与半缺省,例:
//全缺省
void F(int x = 10 , int y = 10)
{cout << x + y << endl;
}int main()
{F(0);//此时给x赋值为0F();//x,y均采用缺省值return 0;
}
输出结果如下:
//半缺省
void F(int x, int y = 10)
{cout << x + y << endl;
}int main()
{F(0,15);//此时给x赋值为0,y为15F(0);//x赋值为0,y采用缺省值return 0;
}
输出结果如下:
注意
- C++规定在半缺省时只能从右往左缺省,不能跳跃间隔缺省,赋值时只能从左往右赋值,不能跳跃赋值
- 函数声明和定义分开时只能在声明中缺省,不能在定义中进行缺省