C++重载覆盖隐藏
写一个程序,各写出重载覆盖
1 //
// main.cpp
// 2013-7-17作业2
//
// Created by 丁小未 on 13-7-17.
// Copyright (c) 2013年 dingxiaowei. All rights reserved.
//
//2.在一个程序中,各写出重载覆盖隐藏的成员函数
#include <iostream>
using namespace std; class A
{ public:
void func()
{
cout<<"A的func()"<<endl;
}
void func1(int i)
{
cout<<"A的func1()"<<" 参数是:"<<i<<endl;
}
virtual void func2()
{
cout<<"A的func2()"<<endl;
}
virtual void func2(int i)
{
cout<<"A的func2()"<<" 参数是:"<<i<<endl;
}
}; class B:public A
{
public:
void func() //基类没有virtual关键字就是表示基类被隐藏
{
cout<<"B的func()"<<endl;
}
void func2() //基类有virtual关键字就表示基类方法被覆盖
{
cout<<"B的func2()"<<endl;
}
void func2(int i)
{
cout<<"B的func2()"<<" 参数:"<<i<<endl;
}
};
int main(int argc, const char * argv[])
{
A a1;
A *a2=&a1;
B b1;
A *a3=&b1;
B *b2=&b1;
a1.func(); //A的func()
a1.func1(); //A的func1() 1
a2->func1(); //A的func1() 2
a2->func2(); //A的func2() 3
a2->func(); //A的func()
a3->func(); //A的func()
a3->func1(); //A的func1() 4
a3->func2(); //B的func2()
a3->func2(); //B的func2() 5
b1.func(); //B的func()
b1.func2(); //B的func2()
b2->func(); //B的func()
b2->func2(); //B的func2()
b2->func1(); //A的func1() 6
b2->A::func2(); //A的func2() 7
return ;
} 如果基类中函数不是虚函数,子类也有这个同名同参数函数,那么基类函数被隐藏;如果基类中该函数是虚函数,那么就是覆盖,如果在同一个类中,两个 函数名字相同,参数或返回类型不同,那么就是属于函数的重载
C++重载覆盖隐藏的更多相关文章
- c/c++:重载 覆盖 隐藏 overload override overwrite
http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html 成员函数的重载.覆盖与隐藏成员函数的重载.覆盖(override)与隐藏很容易混 ...
- c++ 继承 虚函数与多态性 重载 覆盖 隐藏
http://blog.csdn.net/lushujun2011/article/details/6827555 2011.9.27 1) 定义一个对象时,就调用了构造函数.如果一个类中没有定义任何 ...
- c++中 重载 覆盖 隐藏的区别 附加 mutable笔记
成员函数被重载的特征有: 1) 相同的范围(在同一个类中): //2) 函数名字相同: 3) 参数不同: 4) virtual关键字可有可无. 覆盖的特征有: 1) 不同的范围(分别位于派生类与基类) ...
- C++中的重载,隐藏,覆盖,虚函数,多态浅析
直到今日,才发现自己对重载的认识长时间以来都是错误的.幸亏现在得以纠正,真的是恐怖万分,雷人至极.一直以来,我认为重载可以发生在基类和派生类之间,例如: class A { public: void ...
- 【C++】三大概念要分清--重载,隐藏(重定义,覆盖(重写)
{ c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)} 重载 • 概念:在同一个作用域内:函数名相同,参数列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),返回值类 ...
- c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)
重载,隐藏(重定义),覆盖(重写)—这几个名词看着好像很像,不过其实一样都不一样!! 综述: 说明:覆盖中的访问修饰符可以不同是指可以不用显示地用virtual:当访问修饰符改为const或者stat ...
- c++面试常用知识(sizeof计算类的大小,虚拟继承,重载,隐藏,覆盖)
一. sizeof计算结构体 注:本机机器字长为64位 1.最普通的类和普通的继承 #include<iostream> using namespace std; class Parent ...
- c++ 覆盖、重载与隐藏
成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生 ...
- C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态
class 类继承默认是private, struct 默认继承是public C++中的隐藏: 只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名 ...
随机推荐
- 【leetcode】Symmetric Tree
Symmetric Tree Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its ...
- 【leetcode】Longest Valid Parentheses
Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the length ...
- C#之数据分页
方法一:临时datatable 创建临时表,临时变量 DataTable dt = null; //临时表 ; //总分页数 ; //当前页数 ; //每页的数量 加载数据到临时表,该方法测试放到了窗 ...
- POJ 1456(贪心)
#include <string.h> #include <iostream> #include <queue> #include <stdio.h> ...
- Unity3D研究院之Prefab里面的Prefab关联问题(转)
转自http://www.xuanyusong.com/archives/3042 最近在做UI部分中遇到了这样的问题,就是Prefab里面预制了Prefab.可是在Unity里面一旦Prefab预制 ...
- How to raise exceptions in Delphi
uses SysUtils; procedure RaiseMyException; begin raise Exception.Create('Hallo World!'); end;
- ffmpeg-20160731-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- ABAP 承运路单
*&---------------------------------------------------------------------* *& Report ZSDR010 ...
- codeforces 581C. Developing Skills 解题报告
题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...
- struts2环境配置
struts2环境配置 struts2框架,大多数框架都在使用.由于工作需要,开始做Java项目.先学个struts2. 一.下载struts2 有好多版本,我下载的是struts-2.2.1.1. ...