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
原创粉丝点击