综述由AI生成本文详细讲解了 C++ 入门阶段的三个核心知识点:输入输出流、缺省参数与函数重载。首先对比 C 语言,阐述了 iostream 头文件及 cin/cout 的使用,分析了流操作符重载原理及 endl 与换行符的性能差异。其次介绍了缺省参数的定义规则,强调全缺省与半缺省的语法限制及调用顺序。最后解析了函数重载的实现机制,指出参数个数、类型及顺序的区别,并明确返回值不参与重载判定。内容涵盖基础语法、最佳实践及常见陷阱,适合 C++ 初学者系统学习。
氛围3 浏览
一、C++的输入与输出
在 C 语言时代,我们依赖 printf 和 scanf 完成输入输出,手动指定格式符不仅繁琐,还容易因类型不匹配引发风险。C++ 引入了全新的 IO 库,以类型安全和可扩展的设计重构了这一体验。
#include<iostream>voidFunc(int a = 10, int b = 20, int c = 30){
std::cout << a << " " << b << " " << c << std::endl;
}
intmain(){
Func(); // 输出 10 20 30Func(1); // 输出 1 20 30Func(1, 2); // 输出 1 2 30return0;
}
注意:只能从左向右依次传值,不能跨越地、间隔跳跃地传值。例如 Func(a, , c) 是不允许的。如果确实想跳过中间参数,可以通过调整参数顺序来实现。
2.2.2 半缺省
半缺省指对函数中部分变量进行初始化。规定只能从右往左依次缺省,不能间隔跳跃缺省。
#include<iostream>// void Func(int a = 10, int b, int c = 20) 这种格式是错误的voidFunc(int a, int b = 20, int c = 10){
std::cout << a << " " << b << " " << c << std::endl;
}
intmain(){
Func(1); // 输出 1 20 10return0;
}
小贴士:
带缺省参数的函数调用,必须从左到右依次给实参,不能跳跃。
函数声明和定义分离时,缺省参数不能在两者中同时出现,通常规定必须在函数声明时给出缺省值。
三、C++的函数重载
在 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;
}