overload是同一个函数名,根据参数的不同实现不同的功能。例子:
void add(int a, int b){
return a+b;
}
void add(float a, float b){
return a+b;
}
override就是你例子里的重写父类的函数,以实现virtual的功能,基类的指针根据具体带入对象可以调用子类的virtual函数
virtual函数的意义是你用基类的指针去引用子类的对象时,可以调用子类的函数,这点普通函数是不行的。
A* p=new B();
p->normal_func() //将调用基类的定义
p->virtual_func() //将调用子类的定义
至于你的例子里面为什么能带入char类型,我估计是想展示overload的用法,但是代码里面没有写出来
B b;
A* p = & b;
p->func();
分两种情况:
1. 如果func被声明为virtual,则p->func()调用的是B类的func()函数
2. 如果func没有声明为virtual,则p->func()调用的是A类的func()函数
如果你能看到“C/C++学习指南 邵发" 的这个书,就不会有此疑问了。