C++抽象编程——面向对象(5)——最终版的point文件
来源:互联网 发布:chunglim淘宝 编辑:程序博客网 时间:2024/06/06 17:04
这里贴上我们讨论了几天的Point类的最终版
Point.h
#ifndef _Point_h#define _Point_h#include <string>class Point { public:/**构造函数:Point();*用法:Point p * Point pt(xc,yc)* ------------------------*创建一个Point类的对象,默认构造函数将默认初始的坐标为(0,0)*第二种形式是用户自行确定x,y的取值*/ Point(); Point(int xc, int yc);/**方法:getX,getY *用法: int x = pt.getX()* int y = pt.getY()*------------------------*用途: 返回Point类中的,x 与 y的值*/ int getX(); int getY();/**方法:toString*用法:string str = pt.tostring()*------------------------*用途: 以“(x,y)”形式返回Point的字符串表示形式。*/ std::string toString();/*这个接口存放着类内不希望用户看到的功能和私有部分 */#include "pointpriv.h" };/**运算符:<<*用法:cout << pt* ------------*用途:重载运算符,使得其能按要求输出*/ std::ostream & operator<<(std::ostream & os, Point pt);/**运算符:==*用法:if(pt1 == pt2) ..... * ------------*用途:判断两个point类对象是不是相等*/bool operator==(Point p1, Point p2);/**运算符:!=*用法:if(pt1 != pt2) ..... * ------------*用途:判断两个point类对象是不是相等,与上面的区分开,我们重载了 ==,不意味着* == 对应的 != 就是取反,因为我们还没给!= 重载对于point的运算 */bool operator!=(Point p1, Point p2);#endif
注意:这里我们没有把运算符重载的函数原型放入到类的里面,原因是它根本就不属于类,它是自由函数(就是上一篇写的第二种情况 )。但是它又与point类有着关联,所以我们把它放在point的头文件里面。
pointpriv.h
/* *这个部分是包含了point类的私有部分。*这部分内容并不希望用户通过接口看到,因为这些内容*对于用户来说,是不能被修改的,或者是没有意义的**//*函数声明*/friend bool operator==(Point p1, Point p2);private: /*实例参数*/ int x; int y;
这里提一下为什么不把 != 的重载也设为friend函数放进来,因为 !=的重载没用到Point类的私有成员,所以也没必要这么做,它用的只是 == 运算符返回的结果而已。
Point.cpp
#include <string>#include "Point.h"#include "strlib.h"using namespace std;Point::Point(){ x = 0; y = 0;}Point::Point(int xc, int yc) { x = xc; y = yc;}int Point::getX(){ return x;}int Point::getY(){ return y;}string Point::toString(){ return "(" + integerToString(x) + "," + integerToString(y) + ")";}bool operator==(Point p1, Point p2) { return p1.x == p2.x && p1.y == p2.y;}bool operator!=(Point p1, Point p2) { return !(p1 == p2);}ostream & operator<<(ostream & os, Point pt) { return os << pt.toString();}
关于 strlib头文件,参考strlib文件
0 0
- C++抽象编程——面向对象(5)——最终版的point文件
- C++抽象编程——面向对象(8)——最终版的Rational文件
- 面向对象编程的核心——抽象
- 面向对象—抽象
- C++抽象编程——面向对象(1)——类的分级和继承
- C++抽象编程——面向对象(10)——token扫描器的实现
- ANSI-C面向对象编程翻译:第一章 抽象数据类型——信息隐藏
- 面向对象——比抽象类更抽象的
- 面向对象编程:Java中的抽象数据类型——转载
- 面向对象编程:Java中的抽象数据类型——转载
- 面向对象编程:Java中的抽象数据类型——转载
- 【翻译】Java面向对象编程基本概念——抽象
- c++primer——面向对象编程
- 有趣的通讯录—最终版
- 从抽象到模式——面向对象之旅(一)、抽象的魅力
- C++抽象编程——面向对象(6)——设计新的类(1)
- C++抽象编程——面向对象(7)——设计新的类(2)
- C++抽象编程——面向对象(2)——结构体与类
- Eclipse 复制当前行快捷键失效
- C、C++基础知识之 面向对象的三个基本特征
- SpringBoot非官方教程 | 第十七篇:上传文件
- maven 项目的pom.xml第一行报错
- CF
- C++抽象编程——面向对象(5)——最终版的point文件
- SpringBoot非官方教程 | 第十八篇: 定时任务(Scheduling Tasks)
- 马尔科夫链算法的JAVA实现
- SpringBoot非官方教程 | 第十九篇: 验证表单信息
- codeforces round #408 C. Bank Hacking
- python opencv —— io(帧、图像、视频的读取与保存)
- Windows CMD命令大全
- linux环境搭建
- 循环语句 一维数组