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

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关键字来修饰构造函数表示只能使用显示转换(直接初始化一个对象),不能进行隐式转换。

猜你喜欢

转载自blog.csdn.net/sangohan77/article/details/79126936