在C++中,函数是支持重载的。什么是重载呢?
重载的意思就是函数名相同,但是参数的个数、类型不同。
例如:
void func() {cout << "func()" << endl;cout << endl;
}void func(int x) {cout << "func(int x)" << endl;cout << endl;
}void func(int x, int y) {cout << "func(int x, int y)" << endl;cout << endl;
}void func(double x) {cout << "func(double x)" << endl;cout << endl;
}
int main()
{func();func(1);func(1, 2);func(1.0);return 0;
}
运行结果:
函数的返回类型并不是构成重载的原因。
在代码生成的时候就已经报错了,倘若编译器不够严格,继续写下去。
就会出现二义性的情况,你元素的类型不知道接收哪个函数的返回值,造成了二义性。
引用是C++的特性,用简短的一句话概括就是引用就是该变量的别名。
别名在生活中很常见,例如水浒传中的108好汉个个都有别名。
例如:及时雨 - 宋江,黑旋风 - 李逵,…
同样的在C++中也是如此
int main() {int a = 0;int& b = a;return 0;
}
这里的b就是a的别名,他们之间的关系如图所示
一个变量可以有多个别名,就像生活中的一个人也可以有多个别名,例如狗剩,二蛋,…
同时别名也可以有别名。
int main() {int a = 0;int& b = a;int& c = a;int& d = b;return 0;
}
通过修改其中一个,也会对a造成改动。
int main() {int a = 0;int& b = a;int& c = a;int& d = b;b++;cout << a << endl;c++;cout << a << endl;d++;cout << a << endl;return 0;
}
运行结果:
注意:
引用做参数,一半都是用作输出型参数。
例如简单的交换函数:
void Swap(int& a, int& b) {int tmp = a;a = b;b = tmp;
}
修改了形参,实参也修改了。
在有些情况,你会遇到要返回两个值的情况,在C语言中可以用指针解决,而在C++中可以用引用解决。
用引用返回可以减少拷贝,提高效率。