算术操作符重载和关系操作符重载
来源:互联网 发布:进销存财务一体软件 编辑:程序博客网 时间:2024/05/21 09:26
<pre name="code" class="cpp">#include <iostream>#include <string>using namespace std;class Sales_item{public:Sales_item(string &book, const unsigned count, const double amount) :isbn(book), units_sold(count), revenue(amount){}Sales_item& operator+=(const Sales_item&);Sales_item& operator-=(const Sales_item&);friend std::ostream& operator<<(std::ostream&, const Sales_item&);friend bool operator==(const Sales_item&, const Sales_item&); // 关系操作符等于要用友元函数,不等于就不用友元函数,private:string isbn;unsigned units_sold;double revenue;};inline bool operator==(const Sales_item &lhs, const Sales_item &rhs) // 关系操作符的定义,关系操作符用bool{return lhs.units_sold == rhs.units_sold &&lhs.revenue == rhs.revenue &&lhs.isbn == rhs.isbn;}inline bool operator!=(const Sales_item &lhs, const Sales_item &rhs) // 不等式操作符不需要进行友元函数定义,{return !(lhs == rhs);}// 这个是函数的声明,Sales_item operator+(const Sales_item&, const Sales_item&); // 这个是加操作,加的操作不能用引用,它要返回一个新的引用,Sales_item operator-(const Sales_item&, const Sales_item&); // 这个是函数的声明,是减操作,Sales_item& Sales_item::operator+=(const Sales_item& rhs) // 这个是加等于操作,加等于返回的是一个引用,它修改了当前的对象,{units_sold += rhs.units_sold;revenue += rhs.revenue;return *this;}Sales_item& Sales_item::operator-=(const Sales_item& rhs) // 这个是函数的定义,{this->units_sold -= rhs.units_sold; // 这里的this-> 可以省略,this->revenue -= rhs.revenue;return *this;}Sales_item operator+(const Sales_item& lhs, const Sales_item& rhs){Sales_item ret(lhs);ret += rhs;return ret;}Sales_item operator-(const Sales_item& lhs, const Sales_item& rhs){Sales_item ret(lhs);ret += rhs;return ret;}std::ostream& operator<<(std::ostream& out, const Sales_item& s){out << s.isbn << "\t" << s.units_sold << "\t" << s.revenue;return out;}int main(){Sales_item item1(string("0-123-455555-0"), 10, 200.0);Sales_item item2(string("0-123-455555-0"), 2, 50.0);Sales_item result = item1 + item2;cout << result << endl;Sales_item item3(string("0-123-455555-0"), 5, 100);result += item3;cout << result << endl;Sales_item item4(string("0-123-455555-0"), 1, 30);result -= item4;cout << result << endl;Sales_item item5(string("0-123-455555-0"), 10, 200.0);if (item1 == item5){cout << "小崔爱你," << endl;}if (item1 != item2){cout << "不相同," << endl;}cout << "xiao cui" << endl;system("pause"); // 暂停,又重新出现一次(请按任意键继续-------)return 0;}
0 0
- 算术操作符重载和关系操作符重载
- 重载算术操作符
- Scala算术和操作符重载
- C++面向对象操作符重载:算术操作符和关系操作符
- C++ 重载算术操作符
- 关系操作符重载
- C++ 重载关系操作符
- 重载操作符>> 和 <<
- 一般操作符重载和friend重载
- 算术操作符和关系操作符
- C++学习笔记40——重载作符之算术操作符与关系操作符
- 操作符重载和友元的关系
- 不要重载&& ||和,操作符
- 重载算术运算符
- c++重载操作符
- C++ 操作符重载
- 操作符重载浅析
- 操作符重载
- 将所有对象存到数据库中
- ubuntu14.04安装Oracle_linux_x64_11gR2
- 使用Gradle构建Java项目
- 大型网站开发技术书籍汇总
- 23种设计模式全解析
- 算术操作符重载和关系操作符重载
- 自定义UITextView
- 新手学习记录4:makefile学习实践--伪目标的引入
- mysql explain的用法(使用explain优化查询语句)
- HDU 1166 线段树
- 中午乱码问题
- Windows Myeclipse 10 安装 Perl 插件
- 阿里云服务器环境搭建
- 如何在Windows Server中用命令行设置机器允许被远程?