C++学习(四)使用类

1.运算符重载?

定义:名称相同但参数列表不同的函数是函数重载。运算 符重载就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。

class Time
{

private:int hours;
		int minutes;
public:
	Time();
	Time operator +(const Time&t)const;
	Time operator-(const Time&t)const;
	Time operator*(double n)const;
}

Time::Time()
{
	hours = minutes = 0;

}
Time Time::operator+(const Time& t)const
{
	Time sum;
	sum.minutes = minute + t.minutes;
	sum.hours = hours + t.hours + sum.minutes / 60;
	sum.minutes %= 60;
	return sum;

}

Time Time::operator-(const Time& t)const
{
	Time diff;
	int tot1, tot2;
	tot1 = t.minutes + 60 * t.hours;
	tot2 = minute + 60 * hours;
	diff.minutes = (tot2 - tot1) % 60;
	diff.hours = (tot2 - tot1) / 60;
	return diff;
}

Time Time::operator*(double mult)const
{
	Time result;
	long totalminutes = hours * mult * 60 + minutes * mult;
	result.hours = totalminutes / 60;
	result.minutes= totalminutes%60;
	return result;
}
  • 不能重载sizeof ,.:,.*:,?::,const_cast,dynamic_cast,static_cast等运算符。

2.友元?

分类:友元函数,友元类,友元成员函数。

2.1为什么使用友元函数?

具体来说是为了让其他类的成员函数能直接的访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一个函数。
使用友元函数的两种情况:(1)运算符重载的某些场合需要使用友元。(2)两个类共享数据的时候。

2.2使用友元函数优缺点?

(1)优点:能够提高效率,表达简单、清晰。
(2)缺点:友元函数破坏了封装机制,尽量不使用成员函数,除非不得已的情况才使用友元函数。

创建友元:
//friend Time operator *(double m,const Time &t);

class  INTEGER
{
private:
	friend void Print(const INTEGER& obj);

};

void Print(const  INTEGER& obj)
{
//函数体
}
void main()
{
	INTEGER obj;
	Print(obj);//直接调用
}

2.3使用友元函数和类的成员函数的区别?

(1) 成员函数有this指针,而友元函数没有this指针。
(2)友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值