您的位置:首页 > 编程语言 > C语言/C++

c++命名空间,重载,缺省参数

2018-03-19 18:11 267 查看

1、认识c++

c语言是c++的一个子集。在c的基础上c++ 又有了很多新特性



c++基本数据类型



2、c++命名空间:

相当于一个更加灵活的文件域,可以起到名字隔离的作用。

此时在访问时需要使用操作符 ::

#include<iostream>
using namespace std;
namespace my{
int a = 10;
}
int a = 20;
int main(){
int a = 30;
printf("%d\n", a);//30
printf("%d\n", ::a);//20 ::默认是全局域
printf("%d\n", my::a);//10
system("pause");
return 0;
}


3、重载

c语言不允许同名的函数,而c++可以支持函数重载
但是需要满足以下条件之一:
1、函数的参数个数不同
2、函数参数对应位置的参数类型不同,不针对总体类型而言例如
Func(double k,int j);
Func (int j ,double k);


[重要:]为什么c语言不支持重载,c++支持重载?

首先先回顾一下程序从编译到运行的整个过程:



决定c++支持重载就在汇编阶段:

#include<iostream>
using namespace std;
int add(int a,int b){
return (a+b);
}
int add(int a,float b){
return (a+b);
}
int main(int argc,const char* argv[])
{
int a = 10;
int b = 20;
printf("%d", add(a, b));
system("pause");
return 0;
}




4、缺省参数

#include<iostream>
using namespace std;
//int add(int a,int b){
//  return (a+b);
//}
//int add(int a, int b=3){
//  return (a + b);
//}
int add(int a=2, int b = 3){
return (a + b);
}
int main()
{
int a = 10;
int b = 20;
cout << add(a, b) << endl;//不缺省   30
cout << add(a) << endl;//半缺省   13
cout << add() << endl;//全缺省   5
system("pause");
return 0;
}


注意:

1、函数如果已经带有缺省参数的函数原型声明,则在该函数的定义中不允许出现缺省值。

2、一旦函数为某个参数指定了缺省值,后续参数也要定义缺省值,而且只能从右向左定义缺省参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: