C++ Primer Plus第十一章摘要

本文深入探讨了C++中类的使用,包括运算符重载、友元函数的概念及其应用,以及如何重载<<运算符进行输出。同时,文章还介绍了类的自动转换和强制类型转换,为读者提供了全面的C++类操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2020年8月20日

 

第十一章  使用类

 

运算符重载

友元函数

重载<<运算符,以便用于输出

状态成员

使用rand()生成随机值

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

类转换函数

 

1.“轻松地使用这种语言。不要觉得必须使用所有地特性,不要在第一次学习时就试图使用所有的特性。”

 

2.运算符重载:

   是一种形式的C++多态

   运算符函数:operator op(argument-list)

   Time operator+(const Time&t)const;

   Time Time::operator+(const Time&t)const

   {

          Time sum;

          sum.minutes=minutes+t.minutes;

          sum.hours=hours+t.hours+sum.minutes/60;

          sum.minutes%=60;

          return sum;
    }

    total=coding.operator+(fixing);

    total=coding+fixing;

    t4=t1+t2+t3;也是合法的

    t4=t1.operator+(t2+t3);

    t4=t1.operator+(t2.operator+(t3));

 

    重载限制:

         3.不能创建新运算符,例如,不能定义operator**函数来表示求幂。

        

          

            可重载的运算符

 

3.友元(友元函数,友元类,友元成员函数)

   友元函数:通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。创建友元函数的第一步是将其原型放在类声明之中,并在原型声明前加上关键字friend

   虽然友元函数是在类声明中声明的,但它不是成员函数,因此不能使用成员运算符来调用。

   虽然不是成员函数,但它与成员函数的访问权限相同。

   它不是成员函数,不需要类限定符,不需要在定义中使用关键字friend

   友元函数是类的扩展接口的组成部分。

   

4.<<的第一种重载版本

    如果使用一个Time成员函数来重载<<,Time对象将是第一个操作数:trip<<cout;

    但是通过友元函数,可以像下面这样重载运算符

    void operator<<(ostream&os,const Time &t)

    {

           os<<t.hours<<" hours, "<<t.minutes<<" minutes";

     }

     这样就可以使用cout<<trip;

     函数将ostream对象作为一个整体使用,没有直接访问ostream对象的私有成员,所以并不一定是ostream类的友元,这就意味着不必修订ostream的定义。

 

5.<<的第二种重载版本

   cout<<x<<y;

   ostream&operator<<(ostream&os,const Time&t)

   {

          os<<t.hours<<" hours,"<<t.minutes<<" minutes";

          return os;
    }

 

6.对于某些运算符来说,成员函数是唯一合法的选择。在其他情况下。两种格式没有太大区别,有时,根据类设计,使用非成员函数版本可能更好。

 

7.类的自动转换和强制类型转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我怎么对这么多事情都感兴趣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值