C++复习重载

重载


 

运算符重载

  • 注意事项
  • (1)重载后的运算符的操作对象必须至少有一个是用户定义的类型(不能出现歧义)
  • (2)使用运算符不能违法运算符原来的句法规则(不能改变操作数的个数)
  • (3)不能修改运算符原先的优先级
  • (4)不能创建一个新的运算符
  • (5)不能进行重载的运算符:成员运算符,作用域运算符,条件运算符,sizeof运算符,typeid(一个RTTI运算符),const_cast、dynamic_cast、reinterpret_cast、static_cast强制类型转换运算符
  • (6)= 赋值运算符,()函数调用运算符,[ ]下标运算符,->通过指针访问类成员的运算符只能通过成员函数重载
  • 重载方法
  • 类型  类名::operator op (参数)
  • #include<iostream>
    #include<string>
    using namespace std;
    struct time{
        time(int a,int b,int c):hour(a),minute(b),second(c){name = "";}
        int hour,minute,second;
        string name;
        
    //    成员函数
        time operator + (const time &b){
            return time(hour+b.hour,minute+b.minute,second+b.second);
        }
        //友元函数
        friend time operator + (time a, time b){
            time c(a.hour+b.hour,a.minute+b.minute,a.second+b.second);
            return c;
        } 
        
        bool operator < (const time c)const{
            return c.hour+c.minute > hour + minute;
        }          //常用于STL容器的排序 
        
        friend ostream &operator << (ostream &out,time a){
            out << a.hour << ":" << a.minute << ":" << a.second;
        }          //重载输出 
        
        time &operator =(time &d){
            hour = 2*d.hour;
            return *this;
        }          //重载 = 
         
        //重载()
        void operator()(string s){
            s += name;
            cout << s;
        } 
    };
    int main(){
        time t1(1,2,3);
        time t2(4,5,6);
        time t3 = t1 + t2;
        t3 = t3;
        t3.name = "Tom";
        cout << t3 << endl;
        t3("Bob");
        return 0;
    }

函数重载


 

  • 定义
  • 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数
  • 规则
  • 函数名称必须相同
  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等
  • 函数的返回类型可以相同也可以不相同
  • 仅仅返回类型不同不足以成为函数的重载
  • 实例
  • #include<iostream>
    #include<string>
    using namespace std;
    void f(int a){
        cout << a;
    }
    void f(string a){
        cout << a;
    }
    int main(){
        f(123);
        f("123");
        return 0;
    }

     

上一篇:Codeforce 714A


下一篇:Python_运算符优先级与字符串操作