c++重载(overload)和重写(override)的区别和虚函数

2025-03-13 19:37:04
推荐回答(2个)
回答1:

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的用法,但是代码里面没有写出来

回答2:

B b;
A* p = & b;
p->func();

分两种情况:
1. 如果func被声明为virtual,则p->func()调用的是B类的func()函数
2. 如果func没有声明为virtual,则p->func()调用的是A类的func()函数
如果你能看到“C/C++学习指南 邵发" 的这个书,就不会有此疑问了。