C++运算符重载练习
来源:互联网 发布:mac腾讯微云同步盘 编辑:程序博客网 时间:2024/06/09 23:37
声明和定义放在不同的文件:
#ifndef _SALES_ITEM_H_#define _SALE_ITEM_H_#include <string>#include <iostream>class Sales_item{public:Sales_item() {std::cout<<"Sales_item()"<<std::endl;}Sales_item(std::string isbn,unsigned num,double price):ISBN(isbn),num(num),price(price){std::cout<<"Sales_item(std::string isbn,unsigned num,double price)"<<std::endl;}Sales_item(const Sales_item& obj);~Sales_item();std::string isbn(){return ISBN;}Sales_item& operator=(const Sales_item& obj);Sales_item operator+(const Sales_item& obj);Sales_item& operator+=(const Sales_item& obj);friend std::istream& operator>>(std::istream& in,Sales_item& obj);friend std::ostream& operator<<(std::ostream& out,const Sales_item& obj);void display();private:std::string ISBN;unsigned num = 0;double price = 0.0;};#endif类成员的实现:
#include "sales_item.h"#include <iostream>using namespace std;Sales_item::Sales_item(const Sales_item& obj){cout<<"Sales_item::Sales_item(const Sales_item& obj)"<<endl;ISBN = obj.ISBN;num = obj.num;price = obj.price;}Sales_item::~Sales_item(){cout<<"Sales_item::~Sales_item()"<<endl;ISBN = "";num = 0;price = 0.0;}Sales_item& Sales_item::operator=(const Sales_item& obj){cout<<"ISBN:"<<ISBN<<"\tobj.ISBN:"<<obj.ISBN<<endl;if(ISBN == obj.ISBN){num = obj.num;price = obj.price;}return *this;}Sales_item Sales_item::operator+(const Sales_item& obj){cout<<"operator+:"<<ISBN<<"\t"<<obj.ISBN<<endl;Sales_item tmp;if(ISBN == obj.ISBN){tmp.ISBN = ISBN;tmp.num = num + obj.num;tmp.price = price;}return tmp;}Sales_item& Sales_item::operator+=(const Sales_item& obj){cout<<"Sales_item& Sales_item::operator+=(const Sales_item& obj)"<<endl;if(ISBN == obj.ISBN){num += obj.num;}return *this;}istream& operator>>(istream& in,Sales_item& obj){in>>obj.ISBN>>obj.num>>obj.price;return in;}ostream& operator<<(ostream& out,const Sales_item& obj){out<<obj.ISBN<<"\t"<<obj.num<<"\t"<<obj.price;return out;}void Sales_item::display(){cout<<ISBN<<"\t"<<num<<"\t"<<price<<endl;}下面是测试程序:
#include "sales_item.h"#include <iostream>using namespace std;int main(){Sales_item obj1("sss",4,2.3);Sales_item obj2("sss",7,2.7);Sales_item obj3(obj2);obj1 = obj2;obj1.display();obj2.display();cout<<"++++++++++++++++++++++"<<endl;Sales_item obj4 = obj1 + obj2;obj2 += obj2;obj4.display();obj2.display();Sales_item obj5;cin>>obj5;obj5.display();cout<<obj5<<endl;return 0;}运行结果如图:
0 0
- 【c++】运算符重载练习
- 运算符重载练习
- 重载运算符练习
- 运算符重载练习(一)
- 运算符的重载练习
- c++运算符重载练习
- C++运算符重载练习
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- 静态库中有分类,运行crash,提示分类添加的方法找不到
- 国际化
- 漫谈程序员系列:一张图道尽程序员的出路
- Java-IO-java的IO流
- NOIP 2015 Day2 T1 跳石头
- C++运算符重载练习
- android 4.2 系统增永不休眠同时隐藏休眠选项
- Java排序
- 关于机器学习、深度学习以及模式识别
- Mysql中的Btree与Hash索引比较
- python中find()的用法
- C语言位域操作
- jQuery笔记——动画设计——复杂动画
- 最近5年133个Java面试问题列表