读完C++ Primer 第4版 第一章后 实现的Sale_item类
2015-08-18 23:06
615 查看
header file(Sale_item.h):
#ifndef SALES_ITEM_H
#define SALES_ITEM_H
#include<iostream>
class Sales_item
{
public:
Sales_item();
virtual ~Sales_item();
bool same_isbn(Sales_item& s);
protected:
private:
std::string isbn;
unsigned int units_sold;
double revenue;
double avg_price;
friend std::istream& operator>>(std::istream& in, Sales_item& s);
friend std::ostream& operator<<(std::ostream& out, Sales_item& s);
friend Sales_item& operator+(Sales_item & s1, Sales_item& s2);
};
#endif // SALES_ITEM_H
实现(Sale_item.cpp):
#include "Sales_item.h"
Sales_item::Sales_item()
{
//ctor
}
Sales_item::~Sales_item()
{
//dtor
}
bool Sales_item::same_isbn(Sales_item& s)
{
if (isbn == s.isbn)
{
return true;
}
else return false;
}
std::istream& operator>>(std::istream& in, Sales_item& s)
{
in>>s.isbn>>s.units_sold>>s.avg_price;
s.revenue = s.units_sold*s.avg_price;
return in;
}
std::ostream& operator<<(std::ostream& out, Sales_item& s)
{
out<<s.isbn<<" "<<s.units_sold<<" "<<s.revenue<<" "<<s.avg_price;
return out;
}
Sales_item& operator+(Sales_item & s1, Sales_item& s2)
{
if(s1.isbn != s2.isbn)
{
//do something
}
s1.units_sold = s1.units_sold + s2.units_sold;
s1.revenue = s1.revenue + s2.revenue;
s1.avg_price = s1.revenue/s1.units_sold;
return s1;
}
====================================================
C++ 学习, 坚持,每天进步一点点!
以前只有C基础, 通过上面的类,会使用基本的操作符重载
注意点: 操作符重载, 即可以选择成员函数重载,也可非成员函数(一般是友元, 为了访问类的Private 成员); 当用成员函数重载时,参数比正常的要少一个,因为成员函数有一个隐含的this指针,指向该类的一个对象。
#ifndef SALES_ITEM_H
#define SALES_ITEM_H
#include<iostream>
class Sales_item
{
public:
Sales_item();
virtual ~Sales_item();
bool same_isbn(Sales_item& s);
protected:
private:
std::string isbn;
unsigned int units_sold;
double revenue;
double avg_price;
friend std::istream& operator>>(std::istream& in, Sales_item& s);
friend std::ostream& operator<<(std::ostream& out, Sales_item& s);
friend Sales_item& operator+(Sales_item & s1, Sales_item& s2);
};
#endif // SALES_ITEM_H
实现(Sale_item.cpp):
#include "Sales_item.h"
Sales_item::Sales_item()
{
//ctor
}
Sales_item::~Sales_item()
{
//dtor
}
bool Sales_item::same_isbn(Sales_item& s)
{
if (isbn == s.isbn)
{
return true;
}
else return false;
}
std::istream& operator>>(std::istream& in, Sales_item& s)
{
in>>s.isbn>>s.units_sold>>s.avg_price;
s.revenue = s.units_sold*s.avg_price;
return in;
}
std::ostream& operator<<(std::ostream& out, Sales_item& s)
{
out<<s.isbn<<" "<<s.units_sold<<" "<<s.revenue<<" "<<s.avg_price;
return out;
}
Sales_item& operator+(Sales_item & s1, Sales_item& s2)
{
if(s1.isbn != s2.isbn)
{
//do something
}
s1.units_sold = s1.units_sold + s2.units_sold;
s1.revenue = s1.revenue + s2.revenue;
s1.avg_price = s1.revenue/s1.units_sold;
return s1;
}
====================================================
C++ 学习, 坚持,每天进步一点点!
以前只有C基础, 通过上面的类,会使用基本的操作符重载
注意点: 操作符重载, 即可以选择成员函数重载,也可非成员函数(一般是友元, 为了访问类的Private 成员); 当用成员函数重载时,参数比正常的要少一个,因为成员函数有一个隐含的this指针,指向该类的一个对象。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++ Custom Control控件向父窗体发送对应的消息
- C++中拷贝构造函数的应用详解