热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

操作符重载集锦

在C++中约定,对于++操作符重载,将不带参数的作为前项++,将带有一个int类型亚参数的重载作为后项++。#include<iostream>usingnamespacest

在C++中约定,对于++操作符重载 ,将不带参数的作为前项++,将带有一个int类型亚参数的重载作为后项++。

 

  #include <iostream>
using namespace std;


class Data
...{
private:

    
int d;

public:

    Data(
void) : d(0)
    
...{

    }


    Data(
int i) : d(i)
    
...{

    }


    Data(
const Data& data) : d(data.d)
    
...{

    }


    Data
& operator = (const int i)
    
...{
        d 
= i;
        
return *this;
    }


    Data
& operator = (const Data& data)
    
...{
        d 
= data.d;
        
return *this;
    }


    
bool operator == (const int i)const
    
...{
        
return d == i;
    }


    
bool operator == (const Data & data)const
    
...{
        
return data.d == d;
    }


    
operator int(void)const
    
...{
        
return d;
    }


    Data 
operator + (int i)const
    
...{
        
return Data(d + i);
    }


    Data
& operator += (int i)
    
...{
        d 
+= i;
        
return *this;
    }


    Data
& operator += (const Data& data)
    
...{
        d 
+= data.d;
        
return *this;
    }


    Data 
operator << (const int i)const
    
...{
        
return Data(d << i);
    }


    Data
& operator <<= (const int i)
    
...{
        d 
<<= i;
        
return *this;
    }


    Data 
operator >> (const int i)const
    
...{
        
return Data(d >> i);
    }


    Data
& operator >>= (const int i)
    
...{
        d 
>>= i;
        
return *this;
    }


    Data
* operator -> (void)
    
...{
        d
--;
        
return this;
    }


    Data
& operator * (int i)
    
...{
        d 
*= i;
        
return *this;
    }


    Data
& operator * (const Data& data)
    
...{
        d 
*= data.d;
        
return *this;
    }


    
void operator() (void)
    
...{
        cout 
<< "This is a data!" << endl;
    }


    friend ostream
& operator << (ostream& outconst Data* data);

    friend 
int operator + (int i, const Data& data);

    
int GetData(void)const
    
...{
        
return d;
    }

}
;


int operator + (int i, const Data& data)
...{
    
return i + data.d;
}



ostream
& operator << (ostream& outconst Data* data)
...{
    
out << data->+ 100 << endl;
    
return out;
}



class Number
...{
private:

    Data 
*pData;

    
int n;

public:

    
explicit Number(void) : pData(NULL), n(0)
    
...{

    }


    
explicit Number(Data *p) : pData(p), n(1)
    
...{

    }


    Data
& operator * (voidconst
    
...{
        
return *pData;
    }


    
int GetData(voidconst
    
...{
        
return n;
    }

}
;


int main(void)
...{
    cout 
<< "The answer is: " << 3 + Data(5<< endl;

    Data d(
5);

    cout 
<< d << endl;

    cout 
<< &Data(10<< endl;

    cout 
<< "Hey, " << Data(0)->GetData() << endl;

    Data d2 
= 3 + d - 4;

    cout 
<< "Hoo, " << d2->GetData() << endl;

    Data 
*= &d;

    d 
= d * d2;

    cout 
<< "The data is: " << (*p).GetData() << endl;

    d();

    Number n(
&d);

    cout 
<< "The answer is: " << (*n).GetData() << endl;
    cout 
<< "The answer is: " << n.GetData() << endl;

    
return 0;
}


推荐阅读
  • ProblemA.MonsterPathCodejamonisamobilegameinwhichmonstertrainer ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了在Cpp中将字符串形式的数值转换为int或float等数值类型的方法,主要使用了strtol、strtod和strtoul函数。这些函数可以将以null结尾的字符串转换为long int、double或unsigned long类型的数值,且支持任意进制的字符串转换。相比之下,atoi函数只能转换十进制数值且没有错误返回。 ... [详细]
  • C++ 类的 this 指针 语法练习5
    #include<iostream>#include<string>usingnamespacestd;定义一个类Studentclass ... [详细]
  • Igotthiscode(IknowitsinSpanishIcantranslateifneeded)wheretheygivemethefunctionS ... [详细]
  • C++语言学习(六)——二阶构造模式
    C++语言学习(六)——二阶构造模式一、构造函数的问题构造函数存在的问题:A、构造函数只提供自动初始化成员变量的机会B、不能保证初始化逻辑 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
author-avatar
2cz2x
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有