C++学习笔记(19)——多继承中的虚函数

晨曦之光 发布于 2012/03/09 14:15
阅读 477
收藏 0
本博客( http://blog.csdn.net/livelylittlefish )贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 
                            
                            

多继承中的虚函数

                            
                            
        在多继承中,由于派生类是继承多个基类,则要对问题作具体分析,具体分析如下:
                       
        若派生类中函数是来自基类的虚函数和非虚函数,则依照派生路径,分别确定它们是具有虚特性,还是具有重载性,而路径体现在指针是从哪个基类指向派生类的对象;
       
        若一个派生类的多个基类之上,存在一个公共基类,并且公共基类中定义了虚函数,则多级派生后依然可重定义虚函数,这说明虚特性具有传递继承性,也是用于在编程中表达类的统一接口协议的方便工具。
                            
                            
多继承虚函数例子:
                            
                            
#include  < IOSTREAM.H >
class  CBase1     // 基类1
{
public:
    
virtual void func(){cout<<"CBase1::func1() called! ";}    //虚函数
}
;

class  CBase2     // 基类2
{
public:
    
void func(){cout<<"CBase2::func() called! ";}    //非虚函数(一般函数)
}
;

class  CDerive :  public  CBase1, public  CBase2     // 多继承派生类
{
public:
    
void func(){cout<<"CDerive::func() called! ";}
}
;

void  main()
{
    CBase1 obj1,
*p1;
    CBase2 obj2,
*p2;
    CDerive obj3;
    
    p1
=&obj1;
    p2
=&obj2;
    p1
->func();    //调用CBase1类的虚函数func()
    p2->func();    //调用CBase2类的一般函数func()

    p1
=&obj3;    
    p1
->func();    //调用CDerive类的虚函数func()

    p2
=&obj3;
    p2
->func();    //调用CBase2类的一般函数func()
}
                            
                            
运行结果如下:
                                    
                                   

原文链接:http://blog.csdn.net/livelylittlefish/article/details/2203632
加载中
返回顶部
顶部