zoukankan      html  css  js  c++  java
  • C++ operator重载运算符和隐式转换功能的实现

    C++ operator重载运算符和隐式转换功能的实现:

    #include <iostream>
    using namespace std;
    class OperatorTest {
    public:
        int value_;
    
        OperatorTest() {
            value_ = 0;
        }
    
        /*++A*/
        OperatorTest& operator ++() {
            value_++;
            return *this;
        }
    
        /*A++*/
        OperatorTest operator ++(int) {
            OperatorTest ot(*this);
            value_++;
            return ot;
        }
    
        /*A+B*/
        OperatorTest operator +(OperatorTest& ot) {
            OperatorTest ot_tmp;
            ot_tmp.value_ = value_ + ot.value_;
    
            return ot_tmp;
        }
    
        /*A(int)赋值*/
        OperatorTest& operator ()(int a) {
            value_ = a;
            return *this;
        }
    
        /*A<B*/
        bool operator <(OperatorTest& ot) {
            return value_ < ot.value_;
        }
    
        /*A>B*/
        bool operator >(OperatorTest& ot) {
            return value_ > ot.value_;
        }
    
        /*A!=B*/
        bool operator !=(OperatorTest& ot) {
            return value_ != ot.value_;
        }
    
        /*A==B*/
        bool operator ==(OperatorTest& ot) {
            return value_ == ot.value_;
        }
    
        /*A+=B*/
        OperatorTest& operator +=(OperatorTest& ot) {
            value_ += ot.value_;
            return *this;
        }
    
        /*A-=B*/
        OperatorTest& operator -=(OperatorTest& ot) {
            value_ -= ot.value_;
            return *this;
        }
    
        /*隐式转换*/
        operator int() {
            return value_;
        }
    };
    
    int main() {
        OperatorTest A, B;
    
        cout << "++A:" << A++ << endl;
        cout << "B++:" << ++B << endl;
        cout << "A+B:" << A + B << endl;
        cout << "A(int):" << A(3) << endl;
        cout << "A,B:" << A << "," << B << endl;
        cout << "A<B:" << (A < B) << endl;
        cout << "A>B:" << (A > B) << endl;
        cout << "A!=B:" << (A != B) << endl;
        cout << "A==B:" << (A == B) << endl;
        cout << "A+=B:" << (A += B) << endl;
        cout << "A-=B:" << (A -= B) << endl;
    }

    运算结果:

    ++A:0
    B++:1
    A+B:2
    A(int):3
    A,B:3,1
    A<B:0
    A>B:1
    A!=B:1
    A==B:0
    A+=B:4
    A-=B:3

    可以在网上在线运行代码,C++Shell网址:http://cpp.sh/82xpny

  • 相关阅读:
    shell脚本程序练习
    02、重定向和管道符
    01、bash的基本特性
    python--03day
    python--02day
    python--01day
    Django之Form
    Django之ajax
    csrf的中间件
    Django之中间件
  • 原文地址:https://www.cnblogs.com/cv-pr/p/7762695.html
Copyright © 2011-2022 走看看