C++第四篇--重载_指针_引用
1. 基础知识
重载:函数名相同,根据参数不同(类型、数量、顺序不同)调用同名函数
指针和引用:引用就是别名,引用时必须初始化,引用你定义的变量。
int a;
int &b=a; //b即为a的别名
2. 重载
main.cpp
#include <iostream>
using namespace std;
int add(int a,int b){
cout<<"add int + int"<<endl;
return a+b;
}
int add(int a,int b,int c){
cout<<"add int + int + int"<<endl;
return a+b+c;
}
int add(double a,double b){
cout<<"add double + double"<<endl;
return a+b;
}
int add(int a,double b){
cout<<"add int + double"<<endl;
return (double)a+b;
}
int add(double b,int a){
cout<<"add int + double"<<endl;
return a+(double)b;
}
int main(int argc,char **argv){
add(1,2);
add(1,2,3);
add(1.0,2.0);
add(1.0,2);
add(1,2.0);
return 0;
}
程序运行结果:
add int + int
add int + int + int
add double + double
add int + double
add int + double
结论:说明根据函数的参数的不同,可以调用不同的同名函数,但是不可以根据返回值的类型不同调用函数。
3. 指针_引用
main.cpp
#include <iostream>
using namespace std;
//普通传入参数
int add_one(int a){
a = a+1;
return a;
}
//引入指针
int add_one(int *a){
*a = *a +1;
return *a;
}
//引入引用
int add_one_ref(int &b){
b = b+1;
return b;
}
int main(int argc,char **argv){
int a = 99;
int &c = a;;
cout<<add_one(a)<<endl;
cout<<"a="<<a<<endl;
cout<<add_one(&a)<<endl;
cout<<"a="<<a<<endl;
cout<<add_one_ref(a)<<endl;
cout<<"a="<<a<<endl;
c++;
cout<<"a="<<a<<endl;
cout<<"c="<<c<<endl;
return 0;
}
程序运行结果:
100
a=99
100
a=100
101
a=101
a=102
c=102
结论:上述结果可以说明,普通传参数只是将99这个数值传入,对99这个数值进行操作,并没有对a所在的内存进行操作,而指针操作便是a所在的内存进行操作,但是为了避免指针使用不恰当引起的巨大影响,C++引入引用,便是一个变量的别名,指向的是同一个内存地址,故对该引用进行操作,这是对该变量操作,十分方便。