zoukankan      html  css  js  c++  java
  • 7--操作符重载(2)

    (1)一般运算符重载

    在进行对象之间的运算时候,程序会调用与运算符相对应的函数进行处理,所以运算符重载的方式有两种:成员函数和友元函数。
     成员函数的形式比较简单,在类里面定义一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。
    class A
    {
    public:
        A(int d):data(d){}
        A operator+(A&);//成员函数
        A operator-(A&);
        A operator*(A&);
        A operator/(A&);
        A operator%(A&);
        friend A operator+(A&,A&);//友元函数
        friend A operator-(A&,A&);
        friend A operator*(A&,A&);
        friend A operator/(A&,A&);
        friend A operator%(A&,A&);
    private:
        int data;
    };
     
     
    (2)关系运算符
    关系运算有 ==,!=,< ,<=,>>=等。这里只给出成员函数声明
    bool   operator ==( const A & );
    bool   operator !=( const A & );
    bool   operator  <= ( const A & );
    bool   operator <( const A & );
    bool   operator >( const A & );
    bool   operator >=( const A & );
     
    (3)逻辑运算符
    bool operator || ( const A&);
    bool operator && ( const A&);
    bool operator !( );
     
    (4)单目运算符
    这里的 + 、-是正负的意思,放在对象的前面。
    A& operator + ();
    A& operator -();
    A* operator &();
    A& operator *();
     
    (5)自增减运算符
    ++和--根据位置的不同有四种情况,都可以重载
    A&  operator ++();       //前置++
    A   operator  ++(int );   //后置++
    A&  operator --();     //前置--
    A   operator --( int );    //后置--
     
     
    (6)位运算符重载
    按位操作
    A operator | ( const A & );
    A operator &( const A & );
    A operator <<( int i );
    A operator >>( int i );
    A operator~();
     
     
    (7) 赋值运算符重载
    A& operator +=( const A& );
    A& operator -=( const A& );
    A& operator *=( const A& );
    A& operator /=( const A& );
    A& operator %=( const A& );
    A& operator &=( const A& );
    A& operator |=( const A& );
    A& operator ^=( const A& );
    A& operator <<=( const A& );
    A& operator >>=( const A& );
     
     
    (8)内存运算符重载
    void *operator new(size_t size);
    void *operator new(size_t size, int i);
    void *operator new[](size_t size);
    void operator delete(void*p);
    void operator delete(void*p, int i, int j);
    void operator delete [](void* p);
     
     
    (9)只能以友元函数的形式重载
    friend inline ostream &operator << (ostream&, A&);//输出流
    friend inline istream &operator >> (istream&, A&);//输入流
     
    (10)只能是成员函数
    A& operator = (const A& ); 
    char operator [] (int i);
    const char* operator () ();
    T operator -> ();
     
    (11)类型转换符
    operator char* () const;
    operator int ();
    operator const char () const;
    operator short int () const;
    operator long long () const;
    //还有很多就不写了
     
     





  • 相关阅读:
    ASP.NETLinkButton的Click事件中获取CommandArgument的值
    关于绑定了GridView控件后怎么截取字符串和CSS样式来控制表头不换行
    自动生成不重复的含有数字和字母的随机码
    ASP.NET母版页
    C#随机不重复数字字符串2
    asp.net中实现在文本框按下回车键后相当于按下tab键focus跳到下一个文本框
    ASP.NET获取<EmptyDataTemplate></EmptyDataTemplate>模板中的textBox控件值
    C#生成拼音简码
    gridview获取当前行索引的方法大集合
    一、XML
  • 原文地址:https://www.cnblogs.com/gt123/p/3448139.html
Copyright © 2011-2022 走看看