写一个程序,各写出重载覆盖
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++重载覆盖隐藏的更多相关文章

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

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

  2. c++ 继承 虚函数与多态性 重载 覆盖 隐藏

    http://blog.csdn.net/lushujun2011/article/details/6827555 2011.9.27 1) 定义一个对象时,就调用了构造函数.如果一个类中没有定义任何 ...

  3. c++中 重载 覆盖 隐藏的区别 附加 mutable笔记

    成员函数被重载的特征有: 1) 相同的范围(在同一个类中): //2) 函数名字相同: 3) 参数不同: 4) virtual关键字可有可无. 覆盖的特征有: 1) 不同的范围(分别位于派生类与基类) ...

  4. C++中的重载,隐藏,覆盖,虚函数,多态浅析

    直到今日,才发现自己对重载的认识长时间以来都是错误的.幸亏现在得以纠正,真的是恐怖万分,雷人至极.一直以来,我认为重载可以发生在基类和派生类之间,例如: class A { public: void ...

  5. 【C++】三大概念要分清--重载,隐藏(重定义,覆盖(重写)

    { c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)} 重载 •  概念:在同一个作用域内:函数名相同,参数列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),返回值类 ...

  6. c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)

    重载,隐藏(重定义),覆盖(重写)—这几个名词看着好像很像,不过其实一样都不一样!! 综述: 说明:覆盖中的访问修饰符可以不同是指可以不用显示地用virtual:当访问修饰符改为const或者stat ...

  7. c++面试常用知识(sizeof计算类的大小,虚拟继承,重载,隐藏,覆盖)

    一. sizeof计算结构体 注:本机机器字长为64位 1.最普通的类和普通的继承 #include<iostream> using namespace std; class Parent ...

  8. c++ 覆盖、重载与隐藏

    成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生 ...

  9. C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态

    class 类继承默认是private, struct 默认继承是public C++中的隐藏: 只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名 ...

随机推荐

  1. 【Networking】容器网络大观 && SDN 资料汇总

    SDNLAB技术分享(十五):容器网络大观   SDNLAB君• 16-06-17 •2957 人围观 编者按:本文系SDNLAB技术分享系列,本次分享来自SDN撕X群(群主:大猫猫)群直播,我们希望 ...

  2. 7.31 签到,js 全局预处理笔记

    js 解析与执行过程: 一.全局:  1.预处理阶段 : 1.LexicalEnviroment === window {1.预处理 var   |   2.function xxx //预处理申明的 ...

  3. LIGHTSWITCH 连接 MYSQL,中文字符不能保存----解决方法。

    使用:dotConnect for MySQL () 作为 数据库连接的PROVIDER ,  在 LIGHTSWITCH 中 引用外部的MYSQL 数据源. http://www.devart.co ...

  4. Android常用控件

     Android 中使用各种控件(View) DatePicker - 日期选择控件 TimePicker - 时间选择控件 ToggleButton - 双状态按钮控件 EditText - 可编辑 ...

  5. C++ 获取vector容器最后一个元素

    声明:vector<T>  vec; 方法一: return vec.at(vec.size()-1); 方法二: return vec.back(); 方法三: return vec.e ...

  6. C++实现VPN工具之代码示例

    创建.连接.挂断.删除VPN实现起来并不难,下面给出一套比较完整的代码.该段代码只是示例代码,但是已经通过了编译,对API的使用和VPN操作步骤是没问题的.具体每个API代表的意义可以参看<C+ ...

  7. Qt 程序等待多长时间执行

    #include<QElapsedTimer> QElapsedTimer t; t.start(); **; while(t.elapsed()<waitTime) { QCore ...

  8. effective OC2.0 52阅读笔记(一 熟悉Objective-C)

    第一章:熟悉Objective-C 1 了解objective-c语言的起源 总结:OC为C语言添加了面向对象的特性,是其超集.采用动态绑定的消息结构而非函数调用,也就是说,要在运行时才检查对象类型及 ...

  9. 【leetcode】Binary Tree Zigzag Level Order Traversal (middle)

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  10. 【Git】标签管理

    来源:廖雪峰 为什么要标签: 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来. ...