一、C++关键字
二、命名空间
- 命名空间可以解决函数、全局变量名重复的问题,包在不同的命名空间里的重复函数,实际是两个完全无关的函数。
- 命名空间允许嵌套,嵌套内部和外部没有任何关系。
- 命名空间允许重名,重名的名字空间会被合并进其中一个空间。
- 命名空间是用来定义作用域的它解决了c语言中只能用文件划分作用域的缺陷。
#include<iostream>
using namespace std; //将std域对当前文件可见,可直接调用。
//命名空间的嵌套
namespace test
{
namespace N1
{
int add(int a, int b)
{
cout << "1: ";
return a + b;
}
}
namespace N2
{
int add(int a, int b)
{
cout << "2: ";
return a + b;
}
}
}
//简单的命名空间
namespace N2
{
int add(int a, int b)
{
cout << "3: ";
return a + b;
}
}
//允许存在相同名称的命名空间
namespace N2
{
int sub(int a, int b)
{
cout << "4: ";
return a - b;
}
}
int main()
{
cout << test::N1::add(1, 2)<<endl;
cout << test::N2::add(4, 5)<<endl;
cout << N2::add(2, 5)<<endl;
cout << N2::sub(2, 3)<<endl;
system("pause");
return 0;
}
命名空间的使用
1.使用using关键字,可以引用一个命名空间,使得这个命名空间内的所有内容对自己可见。
using N::b;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}
2.使用using namespace 将名词空间名称引入
using namespce N;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
Add(10, 20);
return 0;
}
3.如果两个命名空间里有相同的两个函数,那么即使我同时用using引用了两个命名空间,那么也不会报错,除非我使用了这个函数(因为使用函数会产生歧义,也就是不知道该调用那个)。
三、C++输入&输出
输入:cin>>a;
输出:cout << "hello world"<<endl;
四、缺省参数
函数的参数列表中,允许存在被赋值的参数,这些参数具备以下特点:
1、如果传入了,那么会取传入的值,如果没有传入,会取函数定义时被赋值的值(默认值)
void TestFunc(int a = 0) {
cout<<a<<endl; }
int main()
{
TestFunc(); // 没有传参时,使用参数的默认值
TestFunc(10); // 传参时,使用指定的实参
}
2、半缺省参数的缺省值必须在最后,不能参杂着。
void TestFunc(int a, int b = 10, int c = 20) {
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl; }
3、缺省参数不能同时在函数声明和定义中重复出现。
如果声明与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那个缺省
值。
//a.h
void TestFunc(int a = 10);
// a.c
void TestFunc(int a = 20)
{}