在屏幕右边MYRRT.h头文件中,第197行代码实例化类生成了nn_
本人的疑惑就是list纯虚函数的定义在哪,为什么没有定义就nn_可以直接调用list()函数
能调用,和可执行是两码事
我看了你这个头文件,确实是个纯虚函数,然后你居然用了这个类智能指针调用list
但是,你这个代码应该会出错
你纯虚函数也是虚函数,在虚函数表中会有定义,调用没问题,但运行会报错
虚函数是通过查找虚函数表来调用的,派生类实现了虚函数,那么该虚函数在这个类的虚函数表中的地址就被修改为这个派生类实现的函数地址。而每个拥有虚函数的对象,其对象首地址是一个指向虚函数表的指针。当创建一个派生类对象时,这个对象的虚函数表指针指向的时这个派生类的虚函数表。当用一个基类指针指向一个派生类对象时,这个基类指针访问的虚函数表实际上是派生类的虚函数表。因此通过基类指针调用虚函数,实际调用的是派生类实现的虚函数。
没有关系啊,这是个指针,抽象类是可以定义指针对象的,只需要给指针分配一个子类的对象地址就可以了。这里的nn_在赋值的时候一定是指向子类对象的,不会是纯虚类对象