CAU程序设计2 class2 函数重载

函数重载:

在C++中可以定义重名函数,重名函数可以进行函数重载,使同一个函数能够应付多种情况。

#include <iostream>
using namespace std;

int maxinum(int a, int b, int c){
	int d;
	if(a > b){
		d = a;
	}else{
		d = b;
	}
	return c > d ? c : d;
} 

double maxinum(double a, double b, double c){
	double d;
	if(a > b){
		d = a;
	}else{
		d = b;
	}
	return c > d ? c : d;
}

char maxinum(char a, char b, char c){
	char d;
	if(a > b){
		d = a;
	}else{
		d = b;
	}
	return c > d ? c : d;
}

上述代码重载的最大值函数。

默认参数值

C++允许在函数中定义默认参数值,即调用函数时没有明确定义部分参数值是会用默认参数替代。

注意:默认参数值只能从右往左定义,不能跳过几个参数不定义。

#include <iostream>
using namespace std;

class Cmytime{
private:
	int hour, min, sec;
public:
	Cmytime(int h = 0, int m = 0, int s = 0){
		hour = h;
		min = m;
		sec = s;
	} 
	void Set(int h, int m, int s){
		hour = h;
		min = m;
		sec = s;
	} 
	void Show(){
		cout << hour << ":" << min << ":" << sec;
	}
};

上述代码中重载的类的构造函数

默认函数导致的歧义性:

如上图所示,编译器报错,因为不给参数调用默认函数编译器不知道执行哪一个,应该要把其中一个注释掉。

引用

引用类似与取别名,并用一个新的计算器复制值而是直接引用原来的寄存器。

引用是对指针的进一步简化,如下述代码所述,使用引用显然比指针更好理解,也更简便,但都可以达到同样的效果。

C++中的多态是什么

C++中的多态是指同一个接口或操作在不同的情况下执行的情况不同。

常引用保护

上述的代码会报错,因为这里有一个常引用只读保护,而函数内部修改了这个应引用,因此代码会报错。

操作符重载

操作符重载本质上是函数重载,使操作符具备更多场景的使用功能

一下是一个操作符重载的实例:

但操作符重载仍有一下两点限制:

  1. 无法修改原操作符的操作数个数,如+重载后仍有两个操作数,++重载后只有一个操作数
  2. 无法修改操作符的优先级关系,如会先算*后算+

函数重载在类中声明:

函数重载可以只在类中声明,但在类外实现

如上图所示:-的重载在类中声明,但在类外实现,值得注意的是在类外实现时在运算符前要加上重载运算符所在的类

在类外实现成员函数是一个更好的习惯,因外这样有利于团队的分工(有专人负责设计类的架构)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值