CPP/C++学习笔记03

主要内容:运算符重载和const成员函数

2024.08.24

  1. 运算符重载
    operator + 运算符
    原本可以用函数解决的,替换成运算符重载,提高了可读性

    注:
    1. 不能通过连接其他符号来创建新的操作符:比如operator@
    2. 重载操作符必须有一个内置类型参数
    3. 用于内置类型的运算符,其含义不能改变,例如:内置的整型+,不能改变其含义
    4. 作为类成员函数重载时,其形参看起来比操作数数目少1,因为成员函数的第一个参数为隐藏的this
    5. .* :: sizeof ?: .   注意以上5个运算符不能重载。这个经常在笔试选择题中出现
    6. 不能改变操作符的操作数个数。一个操作符是几个操作数,那么重载的时候就有几个参数

    比大小运算符重载,可以先写< 和 ==,剩下的运算符都可以复用 
  2. 赋值重载函数
    拷贝构造与赋值重载    

     

2024.08.25

  1. ++运算符重载和运算符++
    Date d;
    d++;  // Date operator++(int);
    编译器会将d++转化为d.operator++(0);
    ++d; // Date& operator++();
    编译器会将++d转化为d.operator++();
    前置++运算符重载参数里没有int,且返回类型为Date引用,因为d生命周期还没结束
    而后置++参数里有int,为了和前置++区别,加了个int参数,返回类型为Date,因为后置++里需要一个tmp对象接收*this,不能引用返回,只能传值返回

2024.08.26

  1. const成员函数
    void Print() const; //在函数最后加一个const

    缺省参数处可以调用函数

    class SeqList
    {
    private:
        int* _a;
        size_t _size;
        size_t _capacity;
    }
    const SeqList s;
    不能修改的是_size, _capacity和_a这个指针,而不是指针所指向的值。也就是说const修饰的是int* const _a而不是const int* _a;

    const变量在初始化的时候是可以调用构造函数的,并且构造函数不可以是const成员函数,   
  2. 取地址运算符重载
    日常自动生成的就可以
    不想被取到有效地址可以自己写取地址运算符重载
  3. << >> 运算符重载
    友元函数
    <<重载函数的返回值
    cout相对于printf的优势
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值