您的位置:首页 > 编程语言 > C语言/C++

c++复习之 友元和重载(8)

2018-01-22 11:18 309 查看

11.1 运算符重载

运算符重载是一种形式的c++多态;用户能够定义多个名称相同但特征标(参数列表)不同的函数叫做函数重载或函数多态。

11.2 运算符重载示例

class Time
{
...
Time operator+(const Time&)const;//声明函数
}


Time Time::operator+(const Time& t)const//第一个Time是返回类型,第二个是对象名(命名空间)
{
Time sum;
sum.minutes = minutes + t.minutes;
sum.hours = hours + t.hours + sum.minutes/60;
sum.munutes %= 60;
return sum;
}


11.3 友元

该章节讲到了友元函数:通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。通常友元函数使用在运算符重载中。

friend Time operator*(double m, const Time & t);//声明


Time operator*(double m, const Time & t) //不是成员函数不要使用Time::限定符,不要在定义中使用friend
{
Time result;
...
return result;
}


11.4 重载运算符



11.5 example

再谈重载,一个矢量类

11.6 类的自动转换和强制类型转换

11.6.1 c++内置类型转换

c++处理内置类型转换,相同类型的可以转换,虽然可能会损失精度,但不自动转换不兼容的类型。

int *p = 10;


无法自动转换时,使用强制转换:

int *p = (int *)10;


11.6.2 类的转换

将构造函数用作自动类型转换函数,程序将使用构造函数来创建一个临时对象,并用值初始化,随后复制到左值中。

使用 explicit关键字来修饰构造函数表示只能使用显示转换(直接初始化一个对象),不能进行隐式转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  重载 友元