封装继承和多态是面向对象三大基本支柱。
在面向对象系统中有两种编译方式:静态联编和动态联编
静态联编:也叫早期联编:指系统在编译时就决定如何实现某一动作,提供了执行速度快的优点。
动态联编:也叫滞后联编:指系统运行时动态实现某一动作,它提供了灵活和高度问题抽象的优点。
C++ 支持两种多态性:编译时的多态性和运行时的多态性。
编译时的多态性通过重载来获得,而重载有包含函数重载和运算符重载。
运行时的多态性通过使用继承和虚函数来获得。

===================================运算符重载=============================================
1.运算符重载有何意义?
当你定义一个新的Class的时候,同时需要定义能够作用他的操作,这时就需要运算符重载来实现:
比如: class A{.....};
A b ,c d;
d = b+c;//编译时报错,因为并没有定义关于类型A的+操作。
A A::operator+(A f){};
d= b+c;//这样就对了
//其实,如果觉得不习惯,完全可以编写函数来实现相关操作,并调用函数。比如;d=b.add(c);
运算符重载实际上是一个特殊函数的重载,本质上任何一个运算符底层还是一个函数。
运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不同行为的发生

2.C++中除了以下五个运算符不能重载剩余都可以重载:
成员访问符:“.”
作用域运算符:“::”
条件运算符:“ ? : ”
成员指针运算符:“*”
编译预处理命令的开始符:“#”
3.运算符重载时需要注意的问题:
运算符的优先级和结合性不能改变
程序员并不能创造出新的运算符
重载功能与原功能类似,而且,不能改变运算符操作数据的个数,至少有一个操作数是自定义类型的操作数。
4.运算符重载有两种形式: 以成员函数的形式,以友元函数的形式

--------------> 成员函数的重载:<-----------------------------
注意:若重载的运算符为一元的那么参数列表为空,如果为二元的那么参数列表中有一个操作数。以此类推。
operator是运算符重载中必不可少的关键字。
比如:String operator+(const String &a);class内申明
String String::operator(const String &a){....};体外定义
String demo3 = demo1+demo2;<==等价于==>String demo3=demo1.operator+(demo2);
//详细代码参见:书籍P125~129《课本》。

--------------->友元函数的重载<-----------------------------------
友元函数与成员函数 的重载最大的区别在于:参数列表个数的不同
友元函数不属于任何一个类,故没有this指针,所以它重载运算符时:运算符为一元的那么参数列表里需要一个
操作数,为二元时那么需要两个参数。
友元运算符的重载可以返回任何一个类型,但是通常返回与它的操作类型相同的类型。

注意:有些运算符我们既可以采用成员函数的形成重载当然也可以以友元函数的形式重载,但是有一种情况只能使用友元函数来进行重载:
当运算符的左操作数是一个常数时,不能利用this指针,就必须使用友元重载。

5.常见运算符的重载:
注意前自增和后自增表达式的区别:
price operator++()//这是前自增
price operator++(int)//这是后自增

VC++之运算符重载简单小结的更多相关文章

  1. C++运算符重载(简单易懂)

    转载:https://www.cnblogs.com/liuchenxu123/p/12538623.html 运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型. 你 ...

  2. C++运算符重载的妙用

    运算符重载(Operator overloading)是C++重要特性之中的一个,本文通过列举标准库中的运算符重载实例,展示运算符重载在C++里的妙用.详细包含重载operator<<,o ...

  3. C#高级编程笔记2016年10月12日 运算符重载

    1.运算符重载:运算符重重载的关键是在对象上不能总是只调用方法或属性,有时还需要做一些其他工作,例如,对数值进行相加.相乘或逻辑操作等.例如,语句if(a==b).对于类,这个语句在默认状态下会比较引 ...

  4. PoEduo - C++阶段班【Po学校】-Lesson03-5_运算符重载- 第7天

    PoEduo - Lesson03-5_运算符重载- 第7天 复习前面的知识点 空类会自动生成哪些默认函数 6个默认函数    1  构造  2  析构   3  赋值  4 拷贝构造  5 oper ...

  5. 我的c++学习(8)运算符重载和友元

    运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数). 方法与解释 ◆ 1.定义运 ...

  6. C# 类型运算符重载在类继承中的调用测试

    这是一篇晦涩难懂的片面的研究 一,简单的继承层次 class CA { } class CB : CA{ } class CC : CB{ } } void Test(CA oa){//CATest ...

  7. 【C++】运算符重载

    运算符重载,主要是简化类类型运算,能够让我们对类对象直接用运算符进行运算.基本语法: 类型 operator 运算符(参数列表){ ... } Complex operator+(Complex va ...

  8. Java longTime 和C#日期转换(结构+运算符重载)

    前几天,因为工作原因,连到了公司的一个java系统.查看数据的时候,突然整个人都不好了,数据库中日期字段时间为毛都是整型?之前从来没有接触过java,所心就趁机了解了一下.原来,在数据库中,保存的是j ...

  9. C++:运算符重载函数

    5.运算符重载 5.1 在类外定义的运算符重载函数 C++为运算符重载提供了一种方法,即在运行运算符重载时,必须定义一个运算符重载函数,其名字为operator,后随一个要重载的运算符.例如,要重载& ...

随机推荐

  1. oracle序列中cache和nocache

    首先我这篇博客的内容是我不知道oracle里的 cache 是什么,结果越查越多... "序列的cache通常为 20,但在需要依据序列值判断创建的先后顺序时必须是 NOCACHE" ...

  2. Unity让带有Rigidbody组件的游戏对象停止运动

    Rigidbody rigidbody = transform.GetComponent<Rigidbody>(); rigidbody.velocity = Vector3.zero; ...

  3. Mac改变系统截图存储路径

    时间:2018年9月13日 人物:同事和我 事情:看苹果秋季新品发布会,并且想要截图下来当时的新品介绍. 问题:系统的截图默认是存储在桌面,整理的时候,不是很方便. Mac截图快捷键: 截取选中区域: ...

  4. tablib模块

    ####tablib基础知识#### tablib是什么我就不说了,网上一大推,我大概就知道能将数据转为某种格式 1.安装tablib模块 pip install tablib 2.安装完毕,就在你要 ...

  5. <逆向学习第三天>手动脱FSG壳,修复IAT。

    其实对于简单的壳来说,脱壳常用的方法也无非是那几种,但是每种有每种的好处,具体使用那种方法视情况而定,我今天学习的这个壳很简单,但是重点在于修复IAT. 一.查壳: FSG 2.0的壳. 二.脱壳: ...

  6. rhel7-Samba服务搭建

    服务检查: [root@localhost ~]# systemctl status smb.service● smb.service - Samba SMB Daemon   Loaded: loa ...

  7. MAthJax入门教程(五分钟上手)

    最近在研究,在页面中显示一些数学公式.搞得我很头疼. 据说MathJax会统一这已领域.所以去学了学.网上教程特别多.繁杂. 说的清楚的特别少. 我是这么跑通的,: 1.在官网下载代码地址为:http ...

  8. js中面向对象(创建对象的几种方式)

    1.面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 一.创建对象的几种方式 javascript 创建对象 ...

  9. java递归 斐波那契数列递归与非递归实现

    递归简单来说就是自己调用自己, 递归构造包括两个部分: 1.定义递归头:什么时候需要调用自身方法,如果没有头,将陷入死循环 2.递归体:调用自身方法干什么 递归是自己调用自己的方法,用条件来判断调用什 ...

  10. weui-switch开关控件,表单提交后如何取值

    最近在学习weui这个框架,做了一些小的试验,发现weui-switch控件直接提交不能获取到表单信息,在segmentfault上发现也有人提了这个问题,有人说可以设置一个隐含标签来捕获开关的状态, ...