最近在写程序遇到一个错误:不能实例化抽象类。
这就让我很郁闷了,自己定义类也并非抽象类,怎么还不能实例化对象了呢?
抽象类:
在C++中,当一个类中具有一个或多个纯虚函数的时候,这个类就是抽象类,不能进行实例化。
一般来说,具有纯虚函数的类,被称为抽象基类,抽象基类是不能创建抽象类型的对象,而是该类的派生类去进行实例化
如果抽象类的派生类有任何一个纯虚函数没有具体的实现,那么该派生类任然还是一个抽象类,即还是无法进行实例化对象
例如:
#include <iostream>
//基类
class A
{
public:
A();
virtual ~A();
virtual void print()const=0;
virtual viod Max()const=0;
};
//派生类
class B:public A
{
public:
B();
virtual ~B();
//实现了print函数
void print()
{
}
};
int main()
{
A a; //错误,抽象类无法进行实例化对象
B b; //还是错误,抽象类无法进行实例化对象
return 0;
}
将抽象类中各个纯虚函数具体实现就OK了。
#include <iostream>
//基类
class A
{
public:
A();
virtual ~A();
virtual void print()const=0;
virtual viod Max()const=0;
};
//派生类
class B:public A
{
public:
B();
virtual ~B();
//实现了print函数
void print()
{
}
//实现MAX函数
void Max()
{
}
};
int main()
{
A a; //错误,抽象类无法进行实例化对象
B b; //正确,可以进行实例化
return 0;
}