你的程序有问题
看你这样应该是
class C
{virtual fun()=0;}
class A public :C
{fun(){...}}
class B
{C *c;}
这样的话c只是一个指针,要调用的话要用c->fun(),但是因为c不能实例化,因为C类有虚函数
因此c.fun()无论是从表达式上还是内容上都是错误的,要访问A的fun()只能使用
A a
a.fun()
我试过了,这个是会进行调用的。
首先确认一点:你的写法有问题,C *c; c->fun();
然后第二个问题是内存模型问题,C类中有纯虚函数不能进行实例化,所以定义的指针,指向的实例模型是继承类的。
所以进行调用的时候调用的就是子类的fun().
应该会吧 纯虚函数是没有实现体的,用对象来调用的话只能调用子类里面的。
其实楼主自己试验下就可以知道了。
肯定不会啊,c是一个指针变量,不是一个成员,不具有成员的属性