C++运算符重载-mfc演示
新建一个单文档工程;为工程添加一个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演示相关推荐
- python代码案例详解-Python运算符重载详解及实例代码
Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...
- c++重载运算符_Python 运算符重载
Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了很多魔法方法,它的运算符 ...
- c++中运算符重载方式中你易遗漏的小细节
运算符重载函数相当于类来说有两种存在方式: 1.重载为类的成员函数. 2.重载为类的友元函数. 重载为类的成员函数. 如果把运算符重载为类的成员函数,则该函数么须通过对象调用,该对象就是运算符的其中一 ...
- swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...
swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...
- C++从0到1的入门级教学(十二)——运算符重载
文章目录 12 运算符重载 12.1 加法运算符重载 12.2 左移运算符重载 12.2.1 演示与说明 12.2.2 常见的友元使用:重载>>运算符 12.3 递增运算符重载 12.4 ...
- Python编程基础18:运算符重载
文章目录 零.本讲学习目标 一.运算符重载概述 二.加法运算重载符 (一)概述 (二)案例演示 ( 三)课堂练习 三.索引与切片重载 (一)__getitem__方法 1.概述 2.方法代码 3.案例 ...
- 运算符重载为类的成员函数
运算符重载 运算符重载为类的成员函数后就可以像其他成员函数一样访问本类的数据成员了. 在类的外部通过类的对象,可以像原运算符的使用方式那样使用重载的运算符,比如,"+"运算符被重载 ...
- 【C++】运算符重载关于const的分析(超详细)
C++运算符重载 重载运算符"+" 第1个const 第2个const 第3个const 重载运算符"-" 重载运算符"-"(与上面的含义不 ...
- C++语法——详解运算符重载
运算符重载是C++的一个重要特性.有了运算符重载,在代码编写时能更好的实现封装. 目录 一.运算符重载介绍 二.运算符重载形式 (一).参数 (二).返回值 (三).应用 三.特殊的运算符重载 (一) ...
最新文章
- SpringBoot Web原生组件注入(Servlet、Filter、Listener)
- OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数
- vs code打开文件显示的中文乱码
- 嵌入式C语言基础(二)
- [渝粤教育] 西南科技大学 线性代数 在线考试复习资料
- Django 学习笔记第一课
- HTTPS 原理解析
- extjs曲线数据如何从后端获取_B端产品经理应了解的技术知识(上)
- jquery.pin 修改浮动的top元素
- [转]理解ThreadLocal
- UI设计干货模板素材|数据可视化UX套件
- idea迁移到其他电脑,省去重新安装破解及配置
- inner join on, left join on, right join on讲解
- 计算机网络(第 8 版)第 1 章概述 谢希仁 编著
- OSChina 周六乱弹 —— 快上车,司机调休了
- 如何建立高绩效的团队
- 计算机开机按f1f2,电脑开机总是提示按f1 f2问题的解决办法
- 阿斯利康联手多家诊断公司,共建肺癌诊疗生态圈
- GG-Editor介绍-在线绘图软件
- 汉澳sinox2019操作系统AI企业版发布
热门文章
- 高数第七版_习题解答_3-1行列式习题
- Understand Skills-Based Routing
- spring的发展||springboot和微服务的介绍
- Shiro实现认证_ini
- 二维数组||考试成绩统计: 案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩
- oracle数据库imp导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法,修改dmp文件里oracle数据库版本号方法
- Windows 技术篇 - 如何查看cpu支持的指令集、型号、属性等详细信息,使用cpu-z工具查看处理器、内存、显卡、主板、缓存、SPD信息方法
- CTFshow 命令执行 web38
- 【opencv】边缘高斯模糊(canny+dilate+GaussianBlur)Python实现
- Python分式计算