当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

关于C++类成员函数的重载、覆盖、躲藏与virtual关键字[VC/C++编程]

赞助商链接



  本文“关于C++类成员函数的重载、覆盖、躲藏与virtual关键字[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1. 重载、覆盖与躲藏

1).重载:成员函数具有以下的特点时发生"重载"

A.相同的范围(同一个类中)

B.函数的名字相同

C.参数范例差别(不能举行隐式范例转换)

D.Virtual关键字无关紧要

2).覆盖(也叫"担当"):指派生类函数覆盖基类函数,特点是:

A.差别的范围(辨别位于基类与派生类中)

B.函数名字相同

C.参数相同

D.基类函数必须有virtual关键字

3).躲藏:是指派生类的函数屏蔽了与其同名的基类函数,法则以下:

A.假如派生类的函数与基类的函数同名,但是参数差别,此时不管有没有virtual关键字,基类的函数都将被躲藏,注意别与重载混合)

B.假如派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字,此时基类的函数被躲藏(注意别与覆盖混合)

2.看下面这个例子代码:

#include <iostream>
 using std::cout;
 using std::endl;

 class Base
 {
 public:
     virtual void f(float x){ cout << "Base::f(float) " << x << endl;}
     void g(float x){ std::cout << "Base::g(float) " << x << std::endl;}
     void h(float x){ std::cout << "Base::h(float) " << x <<std::endl;}
 };

 class Derived : public Base
 {
 public:
     virtual void f(float x){ std::cout << "Derived::f(float) " << x << std::endl;}
     void g(int x){ std::cout << "Derived::g(int) " << x << std::endl;}
     void h(float x){ std::cout << "Derived::h(float) " << x << std::endl;}
 };

 void main(void)
 {
     Derived d;
     Base *pb = &d;
     Derived *pd = &d;

     pb->f(3.14f);//Derived::f(float) 3.14
     pd->f(3.14f);//Derived::f(float) 3.14

     pb->g(3.14f);//Base::g(float) 3.14
     pd->g(3.14f);//Derived::g(int) 3

     pb->h(3.14f);//Base:h(float) 3.14
     pd->h(3.14f);//Derived::h(float) 3.14
 }


  以上是“关于C++类成员函数的重载、覆盖、躲藏与virtual关键字[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 关于C++非常的返回值
  • CMD号令下关于cd号令用法
  • 一个关于Comparator的操纵例子
  • 关于C++类成员函数的重载、覆盖、躲藏与virtual关键字
  • <b>关于Cacti配置和安装具体介绍</b>
  • 关于coldfusion安全性
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .