新建一个单文档工程;为工程添加一个Box类;下拉选择 Generic Class,一般类,非MFC类;

输入Box.h的代码;删掉默认生成的cpp文件中的构造和析构函数;

// Box.h: interface for the Box class.
//
//#if !defined(AFX_BOX_H__AC40AC29_0557_4574_977E_F2AA04FD26FF__INCLUDED_)
#define AFX_BOX_H__AC40AC29_0557_4574_977E_F2AA04FD26FF__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class Box
{public:double getVolume(void){return length * breadth * height;}void setLength( double len ){length = len;}void setBreadth( double bre ){breadth = bre;}void setHeight( double hei ){height = hei;}// 重载 + 运算符,用于把两个 Box 对象相加Box operator+(const Box& b){Box box;box.length = this->length + b.length;box.breadth = this->breadth + b.breadth;box.height = this->height + b.height;return box;}private:double length;      // 长度double breadth;     // 宽度double height;      // 高度
};#endif // !defined(AFX_BOX_H__AC40AC29_0557_4574_977E_F2AA04FD26FF__INCLUDED_)

每个box有长、宽、高;由于重载,使得2个box可以直接相加;

在视类cpp文件头部包含 Box.h;

OnDraw函数代码;

void COpovView::OnDraw(CDC* pDC)
{COpovDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;Box Box1;                // 声明 Box1,类型为 BoxBox Box2;                // 声明 Box2,类型为 BoxBox Box3;                // 声明 Box3,类型为 Boxdouble volume = 0.0;     // 把体积存储在该变量中Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0);Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0);// Box1 的体积volume = Box1.getVolume();str1.Format("Volume of Box1 : %f",volume);pDC->TextOut(20,20,str1);// Box2 的体积volume = Box2.getVolume();str1.Format("Volume of Box2 : %f",volume);pDC->TextOut(20,50,str1);// 把两个对象相加,得到 Box3Box3 = Box1 + Box2;// Box3 的体积volume = Box3.getVolume();str1.Format("Volume of Box3 : %f",volume);pDC->TextOut(20,80,str1);
}

输出如下;

MFC的CRect类重载了以下运算符,可以直接用来操作rect对象;

CRect运算符

  operator LPCRECT 将一个CRect转换为一个LPCRECT
  operator LPRECT 将一个CRect转换为一个LPRECT
  operator = 将一个矩形的尺寸拷贝到CRect
  operator == 确定CRect是否与一个矩形相等
  operator != 确定CRect是否不等于另一个矩形
  operator += 使CRect增加指定的偏移,或使CRect放大
  operator -= 从CRect中减去指定的偏移,或缩小CRect
  operator &= 设置CRect等于CRect和某个矩形的交
  operator |= 设置CRect等于CRect和某个矩形的并
  operator + 增加给定偏移量到CRect,并返回得到的CRect对象
  operator - 从CRect中减去给定偏移量,并返回得到的CRect对象
  operator & 创建CRect与某个矩形的交,并返回得到的CRect对象
  operator | 创建CRect与某个矩形的并,并返回得到的CRect对象

C++运算符重载-mfc演示相关推荐

  1. python代码案例详解-Python运算符重载详解及实例代码

    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...

  2. c++重载运算符_Python 运算符重载

    Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了很多魔法方法,它的运算符 ...

  3. c++中运算符重载方式中你易遗漏的小细节

    运算符重载函数相当于类来说有两种存在方式: 1.重载为类的成员函数. 2.重载为类的友元函数. 重载为类的成员函数. 如果把运算符重载为类的成员函数,则该函数么须通过对象调用,该对象就是运算符的其中一 ...

  4. swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...

    swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...

  5. C++从0到1的入门级教学(十二)——运算符重载

    文章目录 12 运算符重载 12.1 加法运算符重载 12.2 左移运算符重载 12.2.1 演示与说明 12.2.2 常见的友元使用:重载>>运算符 12.3 递增运算符重载 12.4 ...

  6. Python编程基础18:运算符重载

    文章目录 零.本讲学习目标 一.运算符重载概述 二.加法运算重载符 (一)概述 (二)案例演示 ( 三)课堂练习 三.索引与切片重载 (一)__getitem__方法 1.概述 2.方法代码 3.案例 ...

  7. 运算符重载为类的成员函数

    运算符重载 运算符重载为类的成员函数后就可以像其他成员函数一样访问本类的数据成员了. 在类的外部通过类的对象,可以像原运算符的使用方式那样使用重载的运算符,比如,"+"运算符被重载 ...

  8. 【C++】运算符重载关于const的分析(超详细)

    C++运算符重载 重载运算符"+" 第1个const 第2个const 第3个const 重载运算符"-" 重载运算符"-"(与上面的含义不 ...

  9. C++语法——详解运算符重载

    运算符重载是C++的一个重要特性.有了运算符重载,在代码编写时能更好的实现封装. 目录 一.运算符重载介绍 二.运算符重载形式 (一).参数 (二).返回值 (三).应用 三.特殊的运算符重载 (一) ...

最新文章

  1. IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0 实际解决方案
  2. matlab中degrees,Convert degrees-minutes-seconds to degrees
  3. JavaScript函数式编程入门经典
  4. PAT乙级 1094 谷歌的招聘(柳婼代码,测试点1、2、4、5分析)
  5. 使用C# 未解决的问题(VS2012)
  6. 使用Libxml2解析xml[转]
  7. 垃圾回收算法_划重点 JVM G1 垃圾回收算法
  8. 最好用的 7 款 Vue 3 富文本编辑器
  9. 推荐一些高质量的自学网站
  10. 腾讯会议共享屏幕 共享PPT视频声音
  11. 数据分析 线性回归分析 方差分析表
  12. 基于selenium的码市外包信息爬虫
  13. ZOC7 for Mac(终端仿真器)含注册码 v7.22.7激活版
  14. 命令与征服2完全版+烈火风暴资料片
  15. 360浏览器兼容模式下站点显示不正常,极速模式正常
  16. Linux内核设计与实现 原书第3版中文版pdf
  17. 为什么双绞线可以屏蔽外部磁场干扰?
  18. 5G NR标准 第1章 什么是5G
  19. 在BIOS中设置U盘启动
  20. 【ReentrantLock】

热门文章

  1. Latex博士论文格式版本(在CASthesis基础上作修改)
  2. android 配置aspect_Android APP全面屏适配技术要点
  3. ae万能弹性表达式_AE脚本精品表达式合集效果库 iExpressions 3.1.006【资源分享1453】...
  4. bugku ctf 杂项 啊哒 writeup || foremost的安装
  5. 用archoctopus下载花瓣
  6. GridBagLayout布局管理器应用详解
  7. Android studio导出的apk在真机上安装提示“文件不存在或已失效”的解决方法
  8. OpenCV中的waitkey()详解
  9. ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 A题 Visiting Peking University
  10. 离散对数(同余理论-BSGS算法)