重载,隐藏,覆盖区别

重载:

同一作用域中,函数名相同,函数的参数表不同(个数,类型,顺序,const),

隐藏:

父子类中,函数名相同,参数表相同,但是父类中函数没有virtual修饰。

父子类中,函数名相同,参数表不同,不管父类中 ,是否有virtual修饰,

都会隐藏。

覆盖:

父子类中,函数名相同,参数表也相同,但是父类中的函数有virtual 修饰。

设有如下类系:

class Visitor {

public:

virtual bool visit (int credit); // ①

virtual bool visit (double cash); // ②

};

class ValidVisitor : public Visitor {

public:

bool visit (int credit); // ③

};

class MyValidVisitor : public ValidVisitor {

public:

bool visit (double cash); // ④

};

其中包含了4个版本的visit函数,请分析它们之间的关系。

其中②和①是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:A

其中③和①是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:B

其中③和②是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:C

其中④和③是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:C

其中④和②是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:B

重载:

同一作用域中,函数名相同,函数的参数表不同(个数,类型,顺序,const),

隐藏:

父子类中,函数名相同,参数表相同,但是父类中函数没有virtual修饰。

父子类中,函数名相同,参数表不同,不管父类中 ,是否有virtual修饰,

都会隐藏。

覆盖:

父子类中,函数名相同,参数表也相同,但是父类中的函数有virtual 修饰。

设有如下类系:

class Visitor {

public:

virtual bool visit (int credit); // ①

virtual bool visit (double cash); // ②

};

class ValidVisitor : public Visitor {

public:

bool visit (int credit); // ③

};

class MyValidVisitor : public ValidVisitor {

public:

bool visit (double cash); // ④

};

其中包含了4个版本的visit函数,请分析它们之间的关系。

其中②和①是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:A

其中③和①是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:B

其中③和②是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:C

其中④和③是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:C

其中④和②是  关系。

A.重载(Overload)

B.覆盖(Override)

C.隐藏(Hide)

D.没有

正确答案:B


相关内容

  • 程序员面试题
  • 1.HTML控件和服务器控件有什么区别?区别在哪? HTML控件和服务器控件有什么区别?区别在哪? 服务器控件经过 服务器 如 下拉列表 国家的选了河北省 下一个就列出河北的市了 HTML控件.. 随便动 不经过服务器 只是在提交的时候得到它的值就可以了 1. new有几种用法  第 ...

  • C面试笔试题
  • C/C++ 笔试.面试题目(1) 1.求下面函数的返回值(微软) int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999. 答案:8 思路:将x转化为2进制, ...

  • 面试常见考题_java基础(全)
  • J2SE 基础 九种基本数据类型的大小,以及他们的封装类. 基本类型:boolean byte char short int long float double void 封装类型:Boolean Byte ● 基本数据类型与其对应的封装类由于本质的不同,具有一些区别: 基本数据类型只能按值传递,而 ...

  • 面向对象三个基本特征
  • 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力: ...

  • C++_4_继承和派生
  • 第四章 继承和派生 §4-1 继承 §4-2 单继承 §4-3多继承 §4-1 继承 一.继承的含义 ① 面向对象方法提供了从问题域到解域的自然映射 客观世界中的对象既有共性,也有个性,通过不同程度的抽象,形成了分类和层次结构 不同层次的类之间体现了概括(generalize)和特化(specify ...

  • 太原理工大学毕业设计
  • 继续教育学院综合作业报告 二〇一〇年五月十五日 摘 要 本文首先介绍了数据库管理系统(DBMS )的基本概念及关系模型等.然后对问题的来源进行深入分析,指出图书借阅者.图书馆工作人员和图书馆管理人员是问题主要来源, 并指出本数据管理系统的实用性功能就是管理好图书馆信息,提高工作效率,避免数据处理手工 ...

  • [Java语言程序设计基础教程]习题解答
  • <Java 语言程序设计基础教程> 练习思考题参考答案 第1章 Java程序设计概述 1.9 练习思考题 1. Java 运行平台包括三个版本,请选择正确的三项:( ) A. J2EE B. J2ME C. J2SE D. J2E 解答:A ,B ,C 2. Java JDK中反编译工具 ...

  • 总结4:有关简述的问题
  • 总结4:有关简述的问题 1.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的访问器采用参数. class SampleCollection { private T[] arr = new T[100]; ...

  • 面试题与答案
  • 1. 面向对象的特征有哪些方面 1. 抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓 ...