虚基类:解决c++多重继承,有一种情况菱形继承的时候,如果不进行处理,会导致基类在派生类中会产生多个实例的情况。
class Book
{
public:
std::string name;
};
class EnglishBook:public virtual Book
{
public:
std::string bookno;
};
class MathBook :public virtual Book
{
public:
std::string bookno;
};
class ColleageBook :public EnglishBook,
public MathBook
{
public:
std::string bookownername;
};
在ColleageBook中只有一份Book类的实例,避免了多个Book基类实列的存在
虚函数:在基类中使用virtual进行声明的函数,方面在派生类中进行重写,通过虚函数可以实现c++的多态。
class Book
{
public:
std::string name;
public:
virtual std::string Getname()
{
return name;
}
};
class EnglishBook:public Book
{
public:
std::string bookno;
public:
std::string Getname()
{
return bookno;
}
};
由于本文只讨论三者的区别,因此对虚函数的详细内容不过多的展开介绍。
纯虚函数:在基类中使用virtual进行声明的函数,并且没有具体的函数内容,纯虚函数参数后接“=0”;
纯虚函数必须由派生类进行重写。
含有纯虚函数的类,叫做抽象类
抽象类是不能创建实例化对象的,只能由派生类进行继承。
class Book
{
public:
std::string name;
public:
virtual std::string Getname() = 0;
};
class EnglishBook:public virtual Book
{
public:
std::string bookno;
public:
std::string Getname()
{
return bookno;
}
};