MaiziTest12.cpp : 定义控制台应用程序的入口点。

1.重载特征

1)相同的范围(在同一个类中);

2)函数名相同;

3)参数不同;

4)virtual关键字可有可无。

2.覆盖

指的是派生类的成员函数覆盖基类中的同名函数。

要求:两个函数的参数个数和类型都相同,基类函数必须是虚函数。

特征:

1)不同的范围(分别位于派生类和基类);

2)函数名字相同;

3)参数相同;

4)基类函数必须有virtual关键字。

3.隐藏

派生类中的函数与基类中的函数参数相同时,但是基类函数不是虚函数。

派生类中的函数与基类中的函数参数不同时,不管基类函数是否是虚函数,基类函数都会被屏蔽。

特征:

1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类函数都将被隐藏;

2)派生类中的函数与基类中的函数参数相同时,但是基类函数不是虚函数(没有virtual关键字)。基类函数将被隐藏。

4.代码

#include "stdafx.h"

#include<iostream>

using namespace std;

//重载

/*

class A

{

//重载关系的3个函数

//.....................................

int fun();

void fun(int);

void fun(double,double);

//....................................

}

*/

//覆盖

/*

class A

{

//............................

virtual void fun1(int,int);

virtual int fun2(char *);

//...........................

};

class B:public A

{

//.....

void fun1(int,int);

//.....

};

class C:public B

{

//....

int fun2(char *);

//...

};

*/

//隐藏

class A

{

public:

void fun(int xp)

{

cout<<xp<<endl;

}

};

class B:public A

{

public:

void fun(char *s)

{

cout<<s<<endl;

}

void fun(int xp)

{

A::fun(xp);

}

};

int _tmain(int argc, _TCHAR* argv[])

{

B obB;

obB.fun("hello");

obB.fun(2);

/*

A *pA = new C;

pA->fun1();

pA->fun2();

*/

return 0;

}

5.运行结果

原文链接:http://www.maiziedu.com/wiki/cplus/hide/

C++学习之重载、覆盖与隐藏的更多相关文章

  1. C++之重载覆盖和隐藏

    继承体系下同名成员函数的三种关系 重载 在同一作用域内 函数名相同,参数列表不同(分三种情况:参数个数不同,参数类型不同,参数个数和类型都不同) 返回值类型可以相同也可以不同 重写(覆盖) 在不同作用 ...

  2. 【转】c++重载、覆盖、隐藏——理不清的区别

    原文网址:http://blog.sina.com.cn/s/blog_492d601f0100jqqm.html 再次把林锐博士的<高质量c++编程指南>翻出来看的时候,再一次的觉得这是 ...

  3. C++中的重载、覆盖、隐藏

    前几天面试时被问及C++中的覆盖.隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏.最终不欢而散.回来后在网上查找学习了一番,做了这个总结.其中部分文字借用了别人的博客,望不要见怪.引用的 ...

  4. ZT C++ 重载、覆盖和隐藏的区别

    重载.覆盖和隐藏的区别 分类: C++ 学习笔记 学习心得与方法 2013-09-26 11:21 50人阅读 评论(0) 收藏 举报 概念区分 “overload”翻译过来就是:超载,过载,重载,超 ...

  5. 类成员函数的重载、覆盖和隐藏区别 (C++)(转)

    类成员函数的重载.覆盖和隐藏区别 (C++)   这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载. ...

  6. 类成员函数的重载、覆盖和隐藏区别 (C++)

    这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载.覆盖和隐藏区别,第一次看到这个问题是在准备找工作的 ...

  7. C++类成员函数的重载、覆盖和隐藏区别?

    C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆 ...

  8. C++重载覆盖隐藏

    写一个程序,各写出重载覆盖 1 // // main.cpp // 2013-7-17作业2 // // Created by 丁小未 on 13-7-17. // Copyright (c) 201 ...

  9. java的重载、覆盖和隐藏的区别

    重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...

  10. c/c++:重载 覆盖 隐藏 overload override overwrite

    http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html 成员函数的重载.覆盖与隐藏成员函数的重载.覆盖(override)与隐藏很容易混 ...

随机推荐

  1. 谁动了我的特征?——sklearn特征转换行为全记录

    目录 1 为什么要记录特征转换行为?2 有哪些特征转换的方式?3 特征转换的组合4 sklearn源码分析 4.1 一对一映射 4.2 一对多映射 4.3 多对多映射5 实践6 总结7 参考资料 1 ...

  2. DOS tasklist 命令(转)

    Dos命令之Tasklist用法及参数函义 2012-10-24 14:44:34|  分类: Windows |字号 订阅   TASKLIST [/S system [/U username [/ ...

  3. 【转】Chrome快捷键

    感谢原作者:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html 标签页和窗口快捷键 Ctrl+N 打开新窗口. Ctrl+ ...

  4. mySQL中删除unique key的语法

    CREATE TABLE `good_booked` (  `auto_id` int(10) NOT NULL auto_increment,  `good_id` int(11) default ...

  5. 用Navicat Premium 远程连接oracle数据库

    1.安装Navicat Premium软件(我的是11.0.7版本)(假设安装路径为D:\NavicatLite\Navicat Premium) 2.下载 instantclient-basic-n ...

  6. C++混合编程之idlcpp教程Lua篇(9)

    上一篇在这 C++混合编程之idlcpp教程Lua篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程LuaTutorial7中除了四个文件LuaTutorial7.c ...

  7. Mac中体验ASP.NET 5 beta2的K gen代码生成

    ASP.NET 5 beta2中增加了一个新特性(详见ASP.NET 5 Beta2 发布),可以通过K命令生成MVC的代码,比如:k gen controller -name HomeControl ...

  8. 压力测试工具ab使用

    ab全名是apache bench,是apache自带的一款压力测试工具.它通过创建多个线程来模拟并发,测试目标是基于URL的,因此不论是什么web服务器都可以支持. 使用ab非常简单,进入apach ...

  9. Linux Shell函数

    200 ? "200px" : this.width)!important;} --> 介绍 正文 $? $?是shell变量,表示"最后一次执行命令"的 ...

  10. 用python语言讲解数据结构与算法

    写在前面的话:关于数据结构与算法讲解的书籍很多,但是用python语言去实现的不是很多,最近有幸看到一本这样的书籍,由Brad Miller and David Ranum编写的<Problem ...