实践如下:

#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();
Book bk2();
//Book bk3(0);
Book bk3 = bk1 + bk2;
cout << "bk3.getPage(): " << bk3.getPage() << endl; bk3 = bk3 + ;
cout << "bk3.getPage(): " << bk3.getPage() << endl; bk3 += ;
cout << "bk3.getPage(): " << bk3.getPage() << endl; bk3 ++;
cout << "bk3.getPage(): " << bk3.getPage() << endl; ++ bk3;
cout << "bk3.getPage(): " << bk3.getPage() << endl; bk3 = ;
cout << "bk3.getPage(): " << bk3.getPage() << endl; cout << "(double)bk3: " << (double)bk3 << endl; cout << "重载操作符实践 end." << endl; return ;
}

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

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

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

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

C++ 操作符重载实践 & java没有重载操作符的思路的更多相关文章

  1. cc22a_demo_c++重载自增自减操作符-代码示范

    cc22a_demo_c++重载自增自减操作符-代码示范 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespa ...

  2. 操作符 Thinking in Java 第三章

    3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 *int类型+String类型  直接转换为String类型 3.4 赋值 1. *引用=引用  两个引用指向同一个对象,所以操作 ...

  3. java的重载

    1.java的重载三种:参数类型不同,构成重载,参数类型不同:::::参数顺序不同构成重载::::::参数个数不同,构成重载

  4. Java中重载和重写的区别

    重载 overloading 1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载是一个类中多态性的一种表现. 2) Java的方法重载,就 ...

  5. java系列--重载和覆盖小结

    继承中属性的隐藏和方法的覆盖      java中规定,子类用于隐藏的变量可以和父类的访问权限不同,如果访问权限被改变,则以子类的权限为准      java中允许子类的变量与父类变量的类型完全不同, ...

  6. Java的常用操作符

    操作符用于接受一个或多个参数,并生成一个新的值.加号和一元的正号(+).减号和一元的负号(一).乘号(*).除号(/)以及赋值号(=)的用法和大多数编程语言都类似. 操作符作用于操作数,生成一个新值. ...

  7. java学习 之 操作符

    操作符介绍 java语言操作符 1.赋值操作符  = 2.计算操作符   + .- (减.负号).*(乘)./(除) 3.递增递减     --(递减).++(递增) 4.关系操作符    ==.!= ...

  8. Java-Runoob-高级教程-实例-方法:15. Java 实例 – 重载(overloading)方法中使用 Varargs

    ylbtech-Java-Runoob-高级教程-实例-方法:15. Java 实例 – 重载(overloading)方法中使用 Varargs 1.返回顶部 1. Java 实例 - 重载(ove ...

  9. Java重写&重载

      在学习完类和对象后,接下来就要进入面向对象的内容了,先从重写和重载开始吧.重写(Override)和重载(Overload)是两个不同的概念,也是两个容易混淆的概念,下面具体来说说这两者. 重写( ...

随机推荐

  1. HTTPS中CA证书的签发及使用过程

    1,HTTPS 简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在 ...

  2. Delphi Button组件

  3. python-装饰(高阶函数)

    python-装饰(高阶函数) 高阶函数 1.把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码) 2.返回值 中包含函数名 高阶函数实现1的功能 def bar(): print(&qu ...

  4. IO模型(epoll)--详解-02

    写在前面 从事服务端开发,少不了要接触网络编程.epoll作为linux下高性能网络服务器的必备技术至关重要,大部分游戏服务器都使用到这一多路复用技术.文章核心思想是:要让读者清晰明白EPOLL为什么 ...

  5. Microsoft SQL Server下的SQL语句

    SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作.一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库dro ...

  6. Let's write a framework.

    Let's write a framework. create a model var model={a:1,b:'b'} let's create a router, router maps url ...

  7. cmd 创建并写入文件

    一.建立空文件的几种方法1.cd.>a.txtcd.表示改变当前目录为当前目录,即等于没改变:而且此命令不会有输出.>表示把命令输出写入到文件.后面跟着a.txt,就表示写入到a.txt. ...

  8. [uboot] (番外篇)uboot relocation介绍(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ooonebook/article/det ...

  9. 关于深度学习之TensorFlow简单实例

    1.对TensorFlow的基本操作 import tensorflow as tf import os os.environ[" a=tf.constant(2) b=tf.constan ...

  10. linux学习:【第2篇】之常见命令

    linux之常见命令 创建一个目录 /data mkdir /data ls -l /data/ cd /data/ pwd 相对路径与绝对路径 1.绝对路径 从根开始的路径 /data 2.相对路径 ...