C++ 操作符重载实践 & java没有重载操作符的思路

实践如下:

#include <iostream>
using namespace std;

class Book{

    private:
        int page;

    public:
        Book(int no){
            cout<<"构造器:"<<no<<endl;
            page = no;
        }
        virtual ~Book(){}
        int getPage(){
            return page;
        }
        // + 符合重载运算
        Book operator+(Book b){
            // 这个方式是返回当前对象
            this->page += b.page;
            return *this;
            // 这个方式返回一个新对象
            //return Book(page + b.page);
        }

        Book operator+(int no){
            this->page += no;
            return *this;
        }
        Book operator+=(int no){
            this->page += no;
            return *this;
        }
        // int 代表后置
        Book operator++(int){
            this->page ++;
            return *this;
        }
        // 无int 代表前置
        Book operator++(){
            ++page;
            return *this;
        }

        Book operator=(int no){
            page = no;
            return *this;
        }

        // 重载转换运算符
        operator double(){
            return page;
        }

};

int main(){

    cout << "重载操作符实践:" << endl;

    // 调用无参构造器
    Book bk1(100);
    Book bk2(200);
    //Book bk3(0);
    Book bk3 = bk1 + bk2;
    cout << "bk3.getPage(): " << bk3.getPage() << endl;

    bk3 = bk3 + 100;
    cout << "bk3.getPage(): " << bk3.getPage() << endl;

    bk3 += 100;
    cout << "bk3.getPage(): " << bk3.getPage() << endl;

    bk3 ++;
    cout << "bk3.getPage(): " << bk3.getPage() << endl;

    ++ bk3;
    cout << "bk3.getPage(): " << bk3.getPage() << endl;

    bk3 = 666;
    cout << "bk3.getPage(): " << bk3.getPage() << endl;

    cout << "(double)bk3: " << (double)bk3 << endl;

    cout << "重载操作符实践 end." << endl;

    return 0;
}

java中为什么不支持重载运算符:

https://zhidao.baidu.com/question/395158734721133165.html

确实吧,java是一门高级的 简易的 语言。

感觉大学教学的时候,应该先教java 再教C/C++,这样学起来应该会更好一点。

原文地址:https://www.cnblogs.com/do-your-best/p/11198845.html