1??命名空间
2??输入&&输出
3?? 缺省函数
4?? 函数重载
简单的说下c++的头文件用#include;
我们可以发现会出现重命名的问题,c++为了处理这个c语言遗留下的问题引入了命名空间。 命名空间的定义:定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。
第一种普通写法??
命名空间除了这个基本的使用还可以多个嵌套。 第二种嵌套写法??
namespace Tencent
{
namespace Tencent1
{
int a = 0;
void f()
{
printf("viod f(\n");
}
struct ListNode
{
int val;
struct ListNode* next;
};
}
namespace Tencent2
{
int a = 0;
void f()
{
printf("viod f(\n");
}
struct ListNode
{
int val;
struct ListNode* next;
};
}
}
第三种是出现多个命名空间名称一样的问题?? 编译器会将多个命名空间名称一样的合并在一起。 为了处理这个问题CPP引入namespace xxx;通过一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中,这样就可以避免上面多个命名空间冲突问题。
namespace Tencent
{
int f = 6;
int rand = 8;
int a = 21;
}
int a = 0;
int main()
{
int a = 1;
printf("%d\n", rand);
printf("%d\n", f);
printf("%d\n", Tencent::rand);
printf("%d\n", Tencent::f);
printf("%d\n", a);
printf("%d\n", Tencent::a);
return 0;
}
using namespace Tencent的意思是把Tencent命名空间定义的东西放出来。 如何输出里面的东西如上面代码的写法Tencen::rand; 还能这样
namespace HuaWei
{
namespace HuaWei1
{
struct Node
{
int val;
struct Node* next;
};
}
}
int main()
{
struct HuaWei::HuaWei1::Node n1;
n1.val = 99;
struct Tencent::Tencent1::Node n2;
n2.val = 21;
return 0;
}
将HuaWei里面的HuaWei1进行拆分一层拆一层。但是如果一直拆拆到最后就相当没有使用该命名空间。
#include<iostream>
using namespace std;
int main()
{
int a;
double b;
char c;
cin >> a;
cin >> b >> c;
cout << a << endl;
cout << b << " " << c << endl;
return 0;
}
上面的std是c++库的命名空间。 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。>>是流提取运算符,<<流插入运算符。<<end是换行 由于>>&&<<的使用使得cpp可以进行多个输入与多个输出并且不需要考虑类型。
-
?? 缺省函数
定义:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。 如果实参有值传的实参,否则像图中第一个无实参的一样用的是形参的值。
缺省函数又分为全缺省参数与半缺省参数。
1.全缺省:
using namespace std;
void TestFunc(int a = 10, int b = 20, int c = 30)
{
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl << endl;
}
int main()
{
TestFunc();
TestFunc(1);
TestFunc(1,2);
TestFunc(1,2,3);
return 0;
}
2.半缺省:
using namespace std;
void TestFunc(int a, int b = 20, int c = 30)
{
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl << endl;
}
int main()
{
TestFunc();
TestFunc(1);
TestFunc(1,2);
TestFunc(1,2,3);
return 0;
}
将代码对比,可以得出它俩的区别。
注意:
1. 半缺省参数必须从右往左依次来给出,不能间隔着给 2. 缺省参数不能在函数声明和定义中同时出现 3. 缺省值必须是常数或者全局变量。
|