C++ 输入输出系统基于 iostream 库,相比 C 语言提供了类型安全的 cin/cout 对象及流操作符重载机制。文章详解 endl 与换行符的缓冲差异,以及提升 IO 效率的方法。缺省参数允许函数调用时省略部分实参,需遵循从右向左缺省规则。函数重载通过参数类型或数量区分同名函数,返回值不可作为重载依据。这些基础特性构成了 C++ 多态与灵活性的基石。
#include<iostream>voidFunc(int a = 10, int c = 30, int b = 20){
std::cout << a << " " << b << " " << c << std::endl;
}
intmain(){
Func(1, 3); // 实际调用顺序对应 a=1, c=3, b 取缺省值 20return0;
}
#include<iostream>voidFunc(int a, int b, int c = 10){
std::cout << a << " " << b << " " << c << std::endl;
}
intmain(){
Func(1, 2); // 正确,c 取缺省值return0;
}
如果想要让两个参数缺省,写法如下:
#include<iostream>voidFunc(int a, int b = 20, int c = 10){
std::cout << a << " " << b << " " << c << std::endl;
}
intmain(){
Func(1); // 正确,b 和 c 取缺省值return0;
}
在 C 语言中,经常会碰到这样的问题:写很多个功能相同的函数但是命名却不能相同,这样就导致了程序员在编写代码时的效率大幅度降低。而 C++ 的函数重载就是为了解决这个问题。
3.1、函数重载的定义
C++ 支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样 C++ 函数调用就表现出了多态行为,使用更灵活。C 语言是不支持同一作用域中出现同名函数的。
#include<iostream>// 参数类型不相同intadd(int a, int b){
std::cout << "int (a+b) " << a + b << std::endl;
return a + b;
}
doubleadd(double a, double b){
std::cout << "double (a + b) " << a + b << std::endl;
return a + b;
}
// 参数个数不相同intadd2(int a, int b, int c){
std::cout << "int (a + b + c) " << a + b + c << std::endl;
return a + b + c;
}
intadd2(int a, int b, int c, int d){
std::cout << "int (a + b + c + d) " << a + b + c + d << std::endl;
return a + b + c + d;
}
// 参数类型顺序不同voidadd3(int a, double b){
std::cout << "int a, double b" << std::endl;
}
voidadd3(double b, int a){
std::cout << "double b, int a" << std::endl;
}
intmain(){
int a = 10, b = 20, c = 30, d = 40;
double a2 = 1.2, b2 = 2.2;
add(a, b);
add(a2, b2);
add2(a, b, c);
add2(a, b, c, d);
return0;
}