1.重载 指针 引用
1.1 重载
函数名都是一样的,但是参数是不一样的,调用同一个函数名的函数。
#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; } double add(double a, double b) { cout<<"add double+double"<<endl; return a+b; } double add(int a, double b) { cout<<"add int+double"<<endl; return (double)a+b; } double add(double b, int a) { cout<<"add double+int"<<endl; return (double)a+b; } int main(int argc, char **argv) { add(1, 2); add(1, 2, 3); add(1.0, 2.0); add(1, 2.0); add(1.0, 2); return 0; }
当我执行
add(1, 2); add(1, 2, 3); add(1.0, 2.0); add(1, 2.0); add(1.0, 2);
的时候,传入的参数是int,int,那么我的编译器是选择第一个函数,还是第二个函数。所以只能通过参数的不一样去重载函数,不能通过函数返回值的不一样去重载函数
1.2 指针与引用
#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; }
第一幅图,正常使用函数以及调用指针两者的区别。
第二,第三幅图是指引用的效果。b被a引用以后,b也就指向了a。
注意: 引用是如下所示,
int &b=a;
赋值的时候是变量,不能够是常数。
int &b=1;//这个是错的