因为A中没有f这个函数。
楼主知道A *b = new B;这句话的含义吗?我来说说我的理解,供参考:
1. B是继承A的
2. 那么B对象中有一块内存用于存放A那一部分内容的,包括A中的私有成员变量都会存放在这块内存中,只是B对象通过正常的方式没有办法调用而已(用特殊的方法,可以很容易从B对象获取A中的私有成员)
3. A *b = new B;这句话就是将B对象中存放A的那一部分内容,提取出来给b,B比A多出来的部分就被剪裁掉了
4. 而3中经过剪裁后的b,并没有成员函数f,因此b->f()必然失败
|
|