您的位置:首页 > 其它

类不能实例化对象?(定义的也不是抽象类)

2017-10-25 17:10 309 查看
最近在写程序遇到一个错误:不能实例化抽象类。



这就让我很郁闷了,自己定义类也并非抽象类,怎么还不能实例化对象了呢?

抽象类:

在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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐