注册 登录
编程论坛 C++教室

如何使用多层继承,虚函数。谢谢

Vsnow 发布于 2015-05-27 22:58, 1716 次点击
如何使用多层继承,虚函数,
5 回复
#2
peach54602015-05-28 10:59
尽量不要使用多继承
#3
yangfrancis2015-05-28 12:58
如果是多层继承,只有最底一层不用虚函数,前面都让它虚掉。
#include<iostream>
using namespace std;
class grandfather
{
public:
    grandfather(){cout<<"构造一个祖父类对象\n";}
    virtual void AgeDescription(){cout<<"年纪在70以上\n";}
};
class father
{
public:
    father(){cout<<"构造一个父类对象\n";}
    virtual void AgeDescription(){cout<<"年纪在25以上\n";}//处于中间一级的仍然用虚函数
};
class son
{
public:
    son(){cout<<"构造一个儿子类对象\n";}
    void AgeDescription(){cout<<"年纪在5岁以下\n";}
};
int main()
{
    grandfather person1;
    person1.AgeDescription();
    father person2;
    person2.AgeDescription();
    son person3;
    person3.AgeDescription();
    return 0;
}
#4
yangfrancis2015-05-28 12:59
如果构造出三个对象,AgeDescription将分别输出"年纪在70以上\n";"年纪在25以上\n";"年纪在5岁以下\n";
#5
yangfrancis2015-05-28 14:21
回复 3楼 yangfrancis
先搞错了,忘了继承了。应该这样:
#include<iostream>
using namespace std;
class grandfather
{
public:
    grandfather(){cout<<"构造一个祖父类对象\n";}
    virtual void AgeDescription(){cout<<"年纪在70以上\n";}
};
class father:public grandfather
{
public:
    father(){cout<<"构造一个父类对象\n";}
    virtual void AgeDescription(){cout<<"年纪在25以上\n";}
};
class son:public father
{
public:
    son(){cout<<"构造一个儿子类对象\n";}
    void AgeDescription(){cout<<"年纪在5岁以下\n";}
};
int main()
{
    grandfather person1;
    person1.AgeDescription();
    father person2;
    person2.AgeDescription();
    son person3;
    person3.AgeDescription();
    return 0;
}
father类将执行本身及祖父类的构造函数,son类将执行本身,父亲类和祖父类的构造函数。但AgeDescription由于用上虚函数,将只执行各自的函数。
#6
peach54602015-05-28 17:16
额...多层继承,看错了,以为是多继承...楼上是对滴...呵呵
1