C++面向对象基础知识

多态是为了接口重用,封装和继承是为了代码重用

子类重新定义父类虚函数的方法叫做继承,不是重载!

一、基本概念

对于C++中经常出现的函数名称相同但是参数列表或者返回值不同的函数,主要存在三种情况:

1.函数重写(override)

函数重载主要实现了父类与子类之间的多态性,子类中定义与父类中名称和参数以及返回值都相同的虚函数。

1)重写的函数不能是static函数,必须是virtual函数,即函数在原始的基类中被声明为虚函数;

2)重写函数与基类函数分在两个类的声明和定义中,这也就导致二者的作用域不同;

3)重写函数的名称、参数列表以及返回值(即函数原型)都要与基类的函数相同;

4)重写函数的访问修饰符可以不同,尽管virtual函数是private的,在派生类中重写的函数可以是public或protect的

2.函数重载(overload)

指函数名称相同但是参数类型或者参数顺序不同的相同作用域中的函数,函数重载不能靠返回值来进行区分;

3.重定义(redefine)

指子类重新定义父类中的非虚函数(参数列表可以不同),这样父类中的对应函数将被隐藏。

二、重写(override)与重载(overload)的区别

1、函数重写是子类和父类之间的继承关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系;

2、重写需要子类和父类中的两个函数的函数原型完全相同;重载要求两个函数参数列表不同;

3、在重写关系中,调用具体调用哪一个函数是根据(对象对应存储空间的实际类型)为准的,这涉及到动态绑定和静态绑定的问题,也就是虚函数的调用机制,而函数重载主要是靠形参列表的不同来区分具体调用哪个函数的。

1.成员函数重载特征:

a、相同的范围(同一个类中)

b、函数名字相同

c、参数不同

d、virtual关键字可有可无

2.重写(覆盖)是指派生类函数覆盖基类函数,特征是:

a、不同的范围,分别位于基类和派生类中

b、函数的名字相同

c、参数相同

d、基类函数必须有virtual关键字

3、重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则是:

a、若派生类的函数和基类的函数同名,但参数不同,此时不管有无virtual,基类的函数被隐藏

b、若派生类的函数和基类的函数同名,且参数相同,但基类没有virtual关键字,基类的函数被隐藏

				
时间: 2024-12-24 15:34:36

C++面向对象基础知识的相关文章

Python 面向对象基础知识

面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass # obj是对象,实例化的过程 obj = 类() obj.函数1() ========== 面向对象不好 ============ ========== 函数编程好 ============== - 有时候,函数编程能实现?比较麻烦. - 面向对象非常的简单就能实现. 3.什么时候适用面向对象?

PHP中oop面向对象基础知识(一)

                                                                                    OOP 基础知识汇总(一) >>>你需要了解以下概念面向对象&面向过程概念:  面向过程:专注于解决一个问题的过程.面向过程的最大特点,是由一个一个的函数去解决处理这个问题的一系列过程.  面向对象:专注于由哪个对象来处理一个问题.面向对象的最大特点,是有一个个具有属性和功能的类,从类中拿到对象,进而处理问题. [

《大话设计模式》笔记-基础知识2:面向对象基础知识

本书作者介绍每一种设计模式就是用类图(用的UML类图,其基础知识另文介绍)+面向对象语言小程序+人物对话解释知识点.本文就是介绍<大话设计模式>中所用到面向对象的基础知识(基于C#语言),方便阅读本书代码. 类与实例 (1)对象 一切事物皆为对象,对象就是看到.感觉到.听到.摸到等实实在在的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,就是针对对象来进行编程的. (2)类 类就是具有相同的属性和功能的对象的抽象的集合.例子如下 "class&q

面向对象基础知识

面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构.CAD技术.人工智能等领域.面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 面向对象要素 ⑴抽象. 抽象是指强调实体的本质.内在的属性.在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为.使用抽象可以尽可能避免过早考虑一些细节. 类实现了对象的数据(即状态)和

java面向对象基础知识

一.面向对象与面向过程的区别: ①所处的角色不同:前者指挥者,后者执行者:②所需知道的事情不同:前者知道哪些是做这些事情的人就可以,不需了解具体的事情操作的过程.后者需要具备应有的技能来做这些事情. 二.面向对象的基本操作过程 指挥者采用面向对象思想,通过创建类,来创建统一的属性值[成员属性]和(做事的)方法[成员方法]. 通过创建的类或者jdk已有的类,来创建具体的对象,属性值明确,方法明确. 举例:创建类 1 package com.oracle.demo02; 2 3 public cla

[麦先生]PHP面向对象基础知识小结

麦先生引言: 伴随着PHP对于面向对象的思想的引入,其执行高效率,代码可塑性,可重用性也促使PHP进入了井喷式发展,对于很多像我这样的初学者而言,如何理解面向对象的思想并灵活运用最为重要; 面向对象的定义:万物皆对象,每一个拥有特定功能和属性的事务都可以成为一个对象,而运用面向对象的思想就是摒弃过去的过程化开发的繁琐和重复,让对象替我们办事情;那么多个拥有相似功能的对象我们可以把他们看成一个大类,称之为类; 面向对象的三大特点:封装,继承,多态; 类的声明方式:class关键字+类名+{};其中

c#面向对象 基础知识(转)

OOP技术按照现实世界的特点来管理复杂的事物,把它们抽象为对象,具有自己的状态和行为,通过对消息的反应来完成一定的任务.这种编程方法提供了非常强大的多样性,大大增加了代码的重用机会,增加了程序开发的速度:同时降低了维护负担,将具备独立性特制的程序代码包装起来,修改部分程序代码时不至于会影响到程序的其他部分. 1.  对象 什么是对象?实际上,现实世界就是由各种对象组成的,如人.汽车.动物.植物等.复杂的对象可以由简单的对象组成.对象都具有各自的属性,如形状.颜色.重量等:对外界都呈现出各自的行为

面向对象基础知识总结

封装的优点 良好的封装能够减少耦合. 类内部的实现可以自由地修改. 类具有清晰的对外接口. 继承 子类拥有父类非private的属性和功能. 子类具有自己的属性和功能(扩展). 子类可以以自己的方式实现父类的功能(重写). 注:C#中子类可以继承父类的方法.域.属性.事件和索引器. 继承的优点 共享代码.避免重复. 使得修改或扩展继承而来的实现都较为容易. 继承的缺点 父类变,子类不得不变. 继承会破坏封装,父类的实现细节会暴露给子类. 多态 子类以父类的身份出现. 子类在工作时以自己的方式来实

PHP面向对象基础知识总结

1.类的变量成员叫做“属性”,或者叫“字段”.“特征”,在本文档统一称为“属性”.2.属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数.3.在类的成员方法里面,可以通过$this->property(property是属性名字)这种方式来访问类的属性. 方法,但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用self::$property.4.在类的非静态方法里面可以使用伪变量$this,这个伪变