作者:阿拉伯恶劣我_295 | 来源:互联网 | 2023-06-03 19:23
纯虚函数在什么情况下可以调用,我怎么看到这个程序中可以调用纯虚函数,抽象类中纯虚函数不是要定义过了才可以使用吗。是不是调用外部动态库文件中的函数,那个接口头文件中到定义可以定义成纯虚函数到形式。
纯虚函数在什么情况下可以调用,我怎么看到这个程序中可以调用纯虚函数,抽象类中纯虚函数不是要定义过了才可以使用吗 。是不是调用外部动态库文件中的函数,那个接口头文件中到定义可以定义成纯虚函数到形式。
12 个解决方案
纯虚函数的话,该类也是抽像类,不能实例化,需要你自己继承该类,并且实现该函数,主要用于提供接口,实现动态绑定,如:
class a
{
public:
virtual void fun(void) = 0;
};
class aa : public a
{
public:
virtual void fun(void){cout<<"aa"< };
class aaa : public a
{
public:
virtual void fun(void){cout<<"aaa"< };
class b
{
public:
virtual a* create(void) = 0;
};
class bb : public b
{
public:
virtual a* create(void){return new aa;};
};
class bbb : public b
{
public:
virtual a* create(void){return new aaa;};
};
使用:
bb tbb;
tbb.create()->fun();
bbb tbbb;
tbbb.create()->fun();
关键是在给我的这段代码中,我只搜索到纯虚函数和调用他的地方,我却么有看到这个包含纯虚函数的抽象类在哪里被继承具体化了。我看到的纯虚函数还是fun()=0;这种形式的,我就怀疑是不是这个是动态库的接口还是怎么的
但是一般给别人到动态库那个头文件里的函数形式不就是一般的那种函数声明嘛,难道你们都写成fun()=0;这种形式的?
我的意思是写成纯虚函数这样的形式和普通的样式,效果和调用结果都是一样的吗