C++入门:重载运算符与函数比较及缺省参数应用

需积分: 10 1 下载量 60 浏览量 更新于2024-08-19 收藏 2.77MB PPT 举报
"重载运算符与一般函数的比较-C++入门课件" 在C++编程中,重载运算符和一般函数是两种不同的方法,但它们在某些方面具有相似性。首先,两者都可以作为类的成员函数,用来扩展类的功能。它们都可以用于实现相同的操作,只不过重载运算符通常使得代码更加简洁易读。 重载运算符是一种特殊的形式,它使得我们可以用已有的运算符执行特定于类的操作。例如,`+` 运算符可以被重载以实现对象的相加。在给定的例子中,`A` 类有两个版本的 `+` 运算符:一个作为成员函数,另一个作为友元函数。成员函数版本的 `operator +` 直接在当前对象上调用,而友元函数版本则接收两个对象并返回一个新的对象。这在调用时表现得非常明显,如 `a3 = a1 + a2;`,这里 `+` 运算符被重载为对象的组合。 另一方面,一般函数(非运算符重载)通常通过函数名来调用,如 `AddA` 函数。它们需要显式地通过对象名和函数名来调用,如 `a3.AddA(a1, a2);`。这种调用方式更为传统,但可能不如重载运算符那么直观。 接下来讨论的是具有缺省参数值的函数。在C++中,我们可以在定义函数时为参数提供缺省值。这允许我们在调用函数时省略某些参数,如果它们没有被显式地传递,编译器会使用预设的缺省值。例如,`fac` 函数接受一个整数 `n` 作为参数,默认值为2。当我们只调用 `fac()` 时,它将使用默认值计算阶乘,输出2。同样,`area` 函数接受长度和宽度作为参数,都有缺省值,可以让我们在未指定所有参数的情况下调用函数。 使用具有缺省参数值的函数时需要注意几点: 1. 缺省参数必须从右向左设置,即参数列表的最右边可以有缺省值,但越靠左的参数不能有缺省值。 2. 在函数原型声明时,可以不提供参数名,但必须提供参数类型和缺省值。 3. 缺省值只能在函数原型定义时设定一次,后续的定义不应包含缺省值。 此外,函数的重载是C++中的一个重要特性,它允许在同一作用域内存在多个同名函数,但每个函数的参数列表必须有所不同,通常是参数个数、参数类型或者参数顺序的差异。重载函数使得我们可以根据传入的参数类型或数量自动选择合适的函数进行调用。然而,仅仅返回类型的不同是不足以区分重载函数的,因为编译器是根据函数的参数列表来决定调用哪个函数的。 在给出的例子中,`fun` 被重载为两个版本,一个接受两个整数参数并返回它们的和,另一个接受一个整数并返回其平方。在 `main` 函数中,这两个版本的 `fun` 根据传入的参数数量被正确调用,分别输出了8和25。 C++的重载运算符和一般函数都是为了增强代码的表达性和灵活性,而具有缺省参数值的函数则是为了简化函数调用,允许在某些情况下不必提供所有参数。这些特性共同构成了C++中丰富的函数和操作符机制,使程序员能够更加高效地编写代码。