1

运算符重载的问题:

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
class CPoint
{
    int x,y;
public:
    CPoint (int vx,int vy)
    {x=vx;y=vy;}
    CPoint () {x=0;y=0;}
    void Print();
    CPoint operator++();
    CPoint operator--();
};
void CPoint::Print()
{    cout<<"("<<x<<","<<y<<")\n";}

CPoint CPoint::operator ++()
{  if (x<640) x++;
   if (y<480) y++;
   return *this;
}
CPoint CPoint ::operator --()
{
    if (x>0) x--;
    if (y>0) y--;
    return *this;
}
void main (void)
{
    CPoint p1(10,10) ,p2(200,200);
    for (int i=0;i<5;i++)
        (++p1).Print();
    cout<<"\n";
    for (i=0;i<5;i++)
        (--p2).Print();
    cout<<"\n";
}

两个关键词 this 和 operate

结果类的非静态成员函数中返回类对象本身的时候,直接使用 return *this

执行

为了更好分析这个代码作用,修改部分内容;

for (int i=0;i<5;i++)
    (p1++).Print();
cout<<"\n";
for (i=0;i<5;i++)
    (p2--).Print();
cout<<"\n";

compile结果如下 2个 warning 0个 error

--------------------Configuration: CPoint - Win32 Debug--------------------
Compiling...
CPoint.cpp
warning C4620: no postfix form of 'operator ++' found for type 'CPoint', using prefix form
see declaration of 'CPoint'
warning C4621: no postfix form of 'operator --' found for type 'CPoint', using prefix form
see declaration of 'CPoint'

CPoint.obj - 0 error(s), 2 warning(s)

转载于:https://www.cnblogs.com/fleetwgx/archive/2009/05/14/1457094.html

C++运算符重载 摘自网络相关推荐

  1. C++ 学习 ::【基础篇:17】:C++ 类与对象:运算符重载介绍、运算符重载函数(类内与类外区别)写法及简单设计实现

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  2. c++重载(以运算符重载为主)

    重载(OverLoading)是面向对象程序设计多态性的一种体现.所谓重载,是指"同一标识符"在同一作用域的不同场合具有不同的语义,这个标识符可以是函数名或运算符.也就是说,重载可 ...

  3. groovy–运算符重载

    Groovy支持运算符重载,各种运算符被映射到普通的java对象的方法调用,这就使得开发者可以利用运算符重载的优势来编写自己的Java或者groovy对象. 下面的表格描述了groovy中的操作符所映 ...

  4. c++运算符重载总结

    c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁.高效.在c++中不止函数可以重载,运算符也可以重载.由于一般数据类型间的运算符没有重载的必要, ...

  5. c++重载运算符_C/C++编程笔记:运算符重载丨重载C++中的New和Delete运算符

    new和delete运算符也可以像C ++中的其他运算符一样重载.New和Delete运算符可以全局重载,也可以在特定类中重载. (1)如果使用某个类的成员函数来重载这些运算符,则意味着这些运算符仅针 ...

  6. C++运算符重载形式--成员函数or友元函数?

    1.C++操作符重载形式-成员函数or友元函数 1.对运算符重载,需要坚持四项基本原则: 不可臆造运算符: 运算符原有操作数的个数.优先级和结合性不能改变: 操作数中至少一个是自定义类型: 保持重载运 ...

  7. C++中运算符重载需要遵循的规则

    一.C++中运算符重载需要遵循的规则 1.并不是所有的运算符都可以重载.能够重载的运算符包括: + - * / % ^ & | ~ ! = < > += -= *= /= %= ^ ...

  8. C++中的运算符重载基础

    1.C++中的运算符重载基础 所谓重载,就是赋予新的含义.函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作.运算符重载(Operator Ov ...

  9. C++中的运算符重载

    1.Cpp中的重载运算符和重载函数 C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载.重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但 ...

最新文章

  1. 阿里云盾技术强在哪里?轻松防御DDoS、CC攻击
  2. 久坐的危害和解决方式
  3. 瞬间带你了解如何优化 Mysql 数据库,老板再也不担心客户投诉了
  4. 在每个运行中运行多个查询_在Kubernetes中运行OpenEBS
  5. python socket编程实现的简单tcp迭代server
  6. React开发(158):ant design级联回显 直接传入数组
  7. verycd重整——CBT系列
  8. Dubbo + RestEasy 实现文件上传与下载
  9. mybatis使用过程遇到的一些问题及解决方法
  10. 架构漫谈(三):如何做好架构之识别问题
  11. 使用tomcat时,Add and Remove出现异常
  12. android studio下生成aar文件,本地调用
  13. 小米被指记录用户的 Web 和手机使用数据;传瑞幸咖啡CTO因个人原因辞职;IntelliJ IDEA 新版发布 | 极客头条...
  14. 使用axis公布weblogic(一个)
  15. Python爬虫之headers和data的获取
  16. php代码实现微信代扣,PHP是如何实现微信H5支付的?
  17. Unity喷墨效果Shader实现
  18. 总结!通过网站设置解决谷歌浏览器不能自动播放音频问题的方案
  19. 美国服务器电影网站版权问题,为什么说选择美国服务器做电影网站比较好
  20. OffiSmart Summit智慧办公及空间管理上海线下峰会精彩亮点抢先看

热门文章

  1. linux上TCP connection timeout的原因查找
  2. discuz加密解密,可参考下
  3. 2015/04/01     RHCS
  4. 删除某个路径下的文件夹
  5. 三国演义告诉我们的60个道理
  6. SpringCloud(三)Eureka之集群搭建以及将服务注册到多个EurekaServer
  7. Docker 深入理解概念
  8. golang new和make却别
  9. 为什么 Go 的泛型一拖再拖?(转)
  10. C#中get和SET