(GeekBand)C++面向对象高级编程(上)第一周测试
来源:互联网 发布:js设计模式与开发实践 编辑:程序博客网 时间:2024/06/05 14:24
第六节 测试
1.指针回调很重要。如果不想使用指针自增的方法从而减少发生内存问题的几率,可以使用p[i]的形式进行操作
2.友元很bug
废话不多说直接贴代码。
//main.cpp
#include<iostream>#include"Data.h"using namespace std;int main(){ Data test; Data *p=new Data[10]; p=CreatePoints(p); for(int i=0;i<10;i++) { test.print(p[i]); } cout<<endl; Sort(p); for(i=0;i<10;i++) { test.print(p[i]); //p[i]形式 } delete []p; return 0;}
//Data.h
#include<time.h>using namespace std;class Data{private: int year; int month; int day; friend bool _doap1(const Data*,const Data&);//< friend bool _doap2(const Data*,const Data&);//> friend bool _doap3(const Data*,const Data&);//== friend Data& _doap4(Data*,const Data&);//= friend void sort(Data*);public: Data(int yea=1,int mont=1,int da=1):year(yea),month(mont),day(da) {} void syear(int x){year=x%2016+1001;} void smonth(int x){month=x%12+1;} void sday(int x){day=x%27+1;} bool operator < (const Data&); bool operator > (const Data&); bool operator == (const Data&); Data& operator = (const Data&); void print(const Data&);};inline bool _doap1(const Data* ths,const Data& x){ if(ths->year<x.year) return 1; else if(ths->year>x.year) return 0; else if(ths->month<x.month) return 1; else if(ths->month>x.month) return 0; else if(ths->day<x.day) return 1; else return 0; }inline bool _doap2(const Data* ths,const Data& x){ if(ths->year>x.year) return 1; else if(ths->year<x.year) return 0; else if(ths->month>x.month) return 1; else if(ths->month<x.month) return 0; else if(ths->day>x.day) return 1; else return 0; }inline bool _doap3(const Data* ths,const Data& x){ if(ths->year==x.year&&ths->month==x.month&&ths->day==x.day) return 1; return 0;}inline Data&_doap4(Data* ths,const Data& x){ ths->syear(x.year); ths->smonth(x.month); ths->sday(x.day); return *ths;}inline bool Data::operator < (const Data& x){ return _doap1(this,x);}inline bool Data::operator > (const Data& x){ return _doap2(this,x);}inline bool Data::operator == (const Data& x){ return _doap3(this,x);}inline Data&Data::operator = (const Data& x){ return _doap4(this,x);}void Data::print(const Data& x){ cout<<x.year<<"-"<<x.month<<"-"<<x.day<<endl;}Data* CreatePoints(Data* data){ srand(time(NULL)); Data* dat=data; for(int i=0;i<10;i++) { dat->syear(rand()); dat->smonth(rand()); dat->sday(rand()); dat++; } return data; //指针回调}void Sort(Data* data){ int i,j; for(i=0;i<9;i++) { for(j=0;j<9-i;j++) { if(data[j]>data[j+1]) { Data temp=data[j];data[j]=data[j+1];data[j+1]=temp; } } }}
第一次自己造轮子,虽说是基础中的基础吧,但还是满满的成就感,哈哈。
0 0
- (GeekBand)C++面向对象高级编程(上)第一周测试
- C++面向对象高级编程(下)第一周-Geekband
- (GeekBand)C++面向对象高级编程(上)第一周笔记(1)
- (GeekBand)C++面向对象高级编程(上)第一周笔记(2)
- Geekband C++面向对象高级编程(上) 第一周笔记 暗影行者
- GeekBand C++ 面向对象高级编程(上) 第一周笔记
- [GeekBand]C++面向对象高级编程(上)- 第一周笔记
- GeekBand笔记-《C++面向对象高级编程(上)》 第一周
- Geekband C++面向对象高级编程(下) 第一周笔记 暗影行者
- GeekBand笔记-《C++面向对象高级编程(下)》 第一周
- GeekBand C++面向对象高级编程(上)一
- Boolan第一周---C++面向对象高级编程(上)
- C++面向对象高级编程(上)-Geekband
- GeekBand C++ 面向对象高级编程(下) 第四周笔记
- 学习笔记—面向对象高级篇上(GeekBand)
- Geekband C++面向对象高级编程(上) 第二周笔记 暗影行者
- Geekband C++面向对象高级编程(上) 第三周笔记 暗影行者
- GeekBand C++ 面向对象高级编程(上) 第二周笔记
- Leetcode-58. Length of Last Word
- Linux 操作指令
- Codeforces Round #368 (Div. 2) D 离线+查询树
- 设计模式学习(简单工厂、策略模式、单一职责、开闭原则)
- 删除排序数组中的重复元素(三种方法的比较)
- (GeekBand)C++面向对象高级编程(上)第一周测试
- php绝对路径与相对路径之间关系的的深入研究
- 安卓基础笔记
- Android中用switch区分点击是哪个按钮的写法
- 1009-FatMouse' Trade
- 第六周--建立顺序队列环形算法库
- Java
- 钢之琴之诗
- bnuoj 52326 Just Convolution(暴力)