C++学习笔记 lesson5 运算符重载

来源:互联网 发布:js判断字符串不相等 编辑:程序博客网 时间:2024/05/06 03:43

 模拟所有的int

#include<iostream>//模拟所有的intclass Integer{public:Integer(int num = 0) :_num(num) {}//  & 取地址运算符 空类中默认生成          // *  空类中默认生成  //无法重载的运算符// :: 域运算符 ?: 三目运算符 .直接成员访问运算符 sizeof //Integer &operator=(const Integer& other)//{//std::cout << "Integer& operator=(const Integer& " << _num << " )" << std::endl;//_num = other._num;//return *this;//}  Integer& operator=(int num){std::cout << "Integer& operator=(int " << num << " )" << std::endl;_num = num;return *this;}Integer&operator+(int num){Integer temp = _num; //使用临时变量,否则加后本身为自增temp._num += num;return *this;}//友元是一种特殊的机制,不属于当前类的任何一个成员函数//使用对象是不能.出来的//主要用于运算符的重载friend Integer&operator+(int num, Integer&me){Integer temp=me._num;temp._num += num;return me;}Integer& operator++()  //前++{_num += 1;return *this;//std::cout << "operator++()" << std::endl;}Integer& operator++(int)  //后++{Integer temp = *this;_num += 1;return temp; //返回+之前的临时对象//std::cout << "operator++(int)" << std::endl;}bool operator==(const Integer& other)const{return _num == other._num;}friend std::ostream& operator <<(std::ostream& os, const Integer &me) {os << me._num;return os;}friend std::istream&operator >> (std::istream&lhs, const Integer&rhs){lhs >> rhs._num;return lhs;}int GetNum(){return _num;}private:int _num; };int main(){Integer demo = 10,other=20;demo = other = 100;//other = 100;==> other.operator=(100);//demo = other;==> demo.operator=(other);//===>    demo.operator=(other.operator=(100))//Integer& operator=(int 20)  先调用other//Integer& operator=(const Integer&)10 再调用默认的demo = 100 + other + 1000;// friend operator+// operator+(int)// 赋值return 0;}


 

0 0
原创粉丝点击