1.命名空间
#include "stdio.h"
#include "stdlib.h"
//自定义一个命名空间
namespace defineName
{
//只能声明和初始化,不可以赋值
int rand = 10;
int a = 20;
}
int a = 30;//全局变量
int main()
{
printf("%d\n",rand);//打印stdlib.h中的rand
printf("%d\n",defineName::rand);//打印自定义命名空间中的rand
int a = 1;//局部变量
printf("%d\n",a);//打印局部变量a
printf("%d\n",::a);//打印全局变量a
return 0;
}
结果如下:
4195424
10
1
30
普通定义及使用
#include "stdio.h"
#include "stdlib.h"
//自定义一个命名空间
namespace defineName
{
int rand = 10;
int add(int left,int right){
return left + right;
}
struct Node
{
struct Node* next;
int val;
};
}
int main()
{
defineName::rand = 20;
struct defineName::Node node;
int c = defineName::add(1,2);
printf("%d\n",c);
return 0;
}
嵌套定义命名空间
#include "stdio.h"
#include "stdlib.h"
//自定义一个命名空间
namespace defineName1
{
int a;
int b;
int Add(int l,int r)
{
return l + r;
}
//嵌套一个命名空间
namespace defineName2
{
int c;
int d;
int Sub(int l,int r)
{
return l - r;
}
}
}
int main()
{
defineName1::a = 1;
//嵌套命名空间的调用
defineName1::defineName2::c = 2;
defineName1::Add(2,3);
defineName1::defineName2::Sub(10,2);
return 0;
}
2.缺省参数(c不支持)
//缺省参数
#include"iostream"
using namespace std;
void func(int a = 0)
{
cout<<a<<endl;
}
int main()
{
func(10);
func();//不传参数就输出方法中赋给a的默认值
return 0;
}
结果就是10和0
全缺省参数
函数中全部的参数都有默认值
#include"iostream"
using namespace std;
void func(int a = 10,int b = 20,int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
cout<<"-----------"<<endl;
}
int main()
{
func(0,1,2);
func(111,222);
func(100);
func();
return 0;
}
运行结果是:
a = 0 b = 1 c = 2
a = 111 b = 222 c = 30
a = 100 b =20 c = 30
a = 10 b = 20 c = 30
半缺省参数
必须从右往左依次给出,必须连续
void func(int a,int b = 20,int c = 30)
3.函数重载(c不支持)
//缺省参数
#include"iostream"
using namespace std;
/**
* @brief
* 参数名相同
* 与返回值无关
* 参数列表的三种不同:
* 参数数量不同
* 参数类型不同
* 参数类型顺序不同
* @return int
*/
int add()
{
cout<<"没有参数"<<endl;
}
int add(int a,int b)
{
cout<<"a + b = "<<a + b<<endl;
}
int add(string s,int a,int b)
{
cout<<s<<a + b<<endl;
}
int add(int a,string s,int b)
{
cout<<s<<a + b<<endl;
}
int main()
{
add();
add(1,2);
add("a + b = ",3,4);
add(5,"a + b = ",7);
return 0;
}
输出结果如下
没有参数
a + b = 3
a + b = 7
a + b = 12
本文详细介绍了C++中的命名空间概念,自定义命名空间的使用,以及缺省参数、全缺省参数和半缺省参数在函数定义中的应用,同时探讨了函数重载的不同情况。
4396

被折叠的 条评论
为什么被折叠?



