C++入门01
C++中的关键字(与版本有关)
98版-63个
命名空间:
1.什么是命名空间:一个作用域 一个班级/一个院系/一个学校
2.命名空间的作用:防止命名冲突
3.如何定义一个命名空间:namespace N1{变量、函数}
命名空间中的成员如何使用:
a.N1::成员名字:当前命名空间在内容中使用少
b.using N1::b;
c.using namespace N1;
缺省参数(相当于备胎的存在)
1.概念:如果在定义函数时,在函数的参数带上一个默认值,在使用时可以传参,也可以不传参。如果用户传递的实参,使用用户传递的实参。如果用户没有传参,则使用默认值。
2.分类:半缺省参数和全缺失参数
半缺省参数:部分参数带有默认值,注意:只能从右往左依次给出,匹配从左往右
void TestFunc(int a,int b,int c=1){}
TestFunc(1,2); a=1,b=2
全缺失参数:所有参数带有默认值
void TestFunc(int a=3,int b=2,int c=1){}
{}
全缺省和不带类型参数不要同时存在
void TestFunc1(){}
void TestFunc1(int a=1){}
TestFunc1();//编译失败,调用时编译器不知道应该调用哪一个
3.注意事项:
a.默认参数设置规则:从右往左依次给出
b.不能在声明和定义时同时给出 两位置默认参数给的不一致的话,编译器不知道用哪个
类似于男女朋友关系:1对1 1对多则不行
c.默认参数提供方式:常量、全局变量
d.C语言不支持
函数重载!!!!
1.概念:在同一个作用域,如果存在多个相同名称的函数,并且参数列表不同 与返回值类型是否相同无关(参数个数、参数类型、类型次序) 一词多义
对于与返回值类型是否相同无关进行解释:
int Add(int,int)
double Add(int,double)
Add(1,2);
此时编译器不知道该调用哪一个
举一个例子,后面解释均使用该例子:
int Add(int a,int b);
double Add(double a,double b);
2.调用原理:
可成功编译:
Add(1,2);
Add(1.0,2.0);
编译阶段,编译器会推演函数实参的类型,根据推演的结果选择合适的函数进行调用,如果没有合适的函数或有多个函数可以选择,编译器会报错
编译失败:
Add(1,2,3);//int int int 没有三个int类型的定义 编译报错
Add(1.0,2.0);//int double 尝试进行类型转化,转化分为两种情况: a.int int b.double double
此时编译器不知道到底应该选择哪一个而引起二义性
3.C+