zoukankan      html  css  js  c++  java
  • 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++,这样学起来应该会更好一点。

  • 相关阅读:
    SSH框架
    buildroot使用详解
    java下的字符流
    Tomcat的相关配置
    web.xml常用元素配置
    四、Emmet:快速编写HTML,CSS代码的有力工具
    Amazium源码分析:(1)基本介绍
    三、Brackets:一个好用的Web前端开发编辑器
    二、CSS 基本介绍
    一、HTML4背景知识
  • 原文地址:https://www.cnblogs.com/do-your-best/p/11198845.html
Copyright © 2011-2022 走看看