base b=der()的执行过程是这样的:
1、构造一个栈上的der临时对象
2、调用base的拷贝构造函数,将der对象作为参数传入,此时der对象会隐式转化为base对象
3、base对象构造完,der临时对象销毁
最终结果就是构造了一个栈上的base对象,你用b肯定只能调用base的函数;
base *bp=new der()的执行过程是这样的:
1、在堆上构造一个der对象
2、bp指针指向这个对象
这种情况下,bp的静态类型是base,但是动态类型是der,因此会触发虚函数机制,调用der的虚函数实现