C++命名空间,缺省函数,函数重载知识总结

命名空间

使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字
污染 。

命名空间定义:

namespace  name   //name就是命名空间的名字
{
	int i = 10;
	int j = 20;
	int add(int a, int b){    //也可以定义函数;
		return a + b;
	}
}

一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

补充1.命名空间可以嵌套。
补充2.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中 。
补充3.一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中 。

命名空间的三种使用方法:
1.加命名空间名称及作用域限定符

int main(){
   printf("%d", name::i);
   return 0;
}

2.使用using将命名空间中成员引入

using name::j;
int main(){
   printf("%d",j);
   return 0;
}

3.使用using namespace 命名空间名称引入

using namespace name;
int main(){
   printf("%d,%d",i,j);
   return 0;
}

缺省函数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参 。

缺省分为两类:
1.全缺省。

int add(int a = 10, int b = 20)

2.半缺省。

int add(int a, int b = 10)

注意1.半缺省参数必须从右往左依次来给出,不能间隔着给。
注意2.缺省参数不能在函数声明和定义中同时出现 。
注意3.缺省值必须是常量或者全局变量。
注意4.C语言不支持缺省函数。

重载函数

C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的
形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题 。

构成重载的条件:
1.函数名相同。
2.参数的个数或者类型不相同。

例如:

int func(int a, int b);   //原函数
//以下都是重载函数
int func(double a,double b);
int func(char c);
double func(double a, int b);

注意:函数的重载与返回值类型无关。

针对这个函数 int add(int a,int b)
g++在编译后,函数修饰后的名字就变成了函数名加上参数类型,如这样<_Z1addii>.
而gcc编译后变成了<_Z2add>.

如上所述就是C++支持函数重载的原因。

extern “C”

在函数前加extern “C”,意思是告诉编译器,将该函数按照C语言规则来编译 。

例如:

extern "C" int add(int a, int b){
   return a + b;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值