C++ PP Chapter XI 使用类

1.  运算符重载(多态)

    运算符函数格式:    operator op(arguemnt-list)
                例如:  operator[](..) //[]是数组索引运算符

                        对time 类重载运算符 + ,该运算将接受另一个time对象
                        返回time对象
                            time time::operator+(const time & T) const
                            {
                                time sum;
                                ...
                                return sum;
                            }
                        那么对于time对象 A,B
                        就可以直接执行 time C = A + B 这样的运算,但是注意对应于列表的顺序!
    同符多义的基本运算符可以多义重载(每种重载都对应于此前的句法) 比如 - 运算具有两种解释

2.  运算符重载限制:
            a.      重载运算符必须有一个操作数是用户定义的类型
            b.      使用运算符时不能违反运算符原本的句法规则(单、双目运算符),
                也不能改变优先级
            c.      不能创建新的运算符
            d.      不能重载:
                        sizeof 、.*(成员指针运算符)、::、?:、typeid(RTTI运算符)
                const_castdynamic_castreinterpret_caststatic_cast (强制转换运算符)

            e.      只能通过成员函数重载:     = 、 () 、 [] 、 ->

3.  友元

    分为三种:
            a.  友元函数
            b.  友元类
            c.  友元成员函数

    友元函数:
                解决了 不能重载运算符解决  (double) 2.5 * (time) B 这样顺序的问题
                I、创建友元函数
                    首先需要在类声明中放入原型,并在原型声明前加上关键字 friend

                    例如:
                        friend Time operator*(double m,const Time & t);

                II、编写函数的定义

                注:类的友元函数是非成员函数,其访问权限与成员函数相同

    常用的友元:重载运算符 <<

            推荐方法 :
                ostream & operator<<(ostream &os,const className & obj)
                {
                    os<< ...;
                    return os;
                }

4.  类的自动转换和强制转换类型(C++ P 笔记)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值