C++中类的成员函数重定义和虚函数有什么区别?
发布网友
发布时间:2022-05-24 07:07
我来回答
共2个回答
热心网友
时间:2023-10-08 02:31
虚函数可以实现多态,重载不行
多态就是用同一个调用方式实现不同调用
比如,你定义了一个名为形状的父类,里面有一个计算面积的虚函数。并且派生了两个子类,一个是圆,一个是方形,各自实现了自己的计算面积函数
这样,你想要计算面积的时候,并不需要考虑圆和方形的区别。只需要 父类.计算面积 这样调用,编译系统会自动帮你选择用圆的计算面积,或是用方形的计算面积
热心网友
时间:2023-10-08 02:31
这都是在继承的类中用到的。
在继承的类中有函数定义和父类中的函数定义重复,就是override,重载
在把一个子类的对象定义给父类的变量的时候,对于同一个函数名的函数,c++将应用那个父类的函数定义。
如果父类的这个函数被定义为virtual,将会调用子类的。
class A{
public:
void foo() {
printf("This is A.\n");
}
};
class B : public A {
public:
void foo() {
printf("This is B.\n");
int main(int argc, char* argv[])
{
A *pa = new B();
pa->foo();
return 0;
}
返回This is A.
如果
class A{
public:
virtual void foo() {
printf("This is A.\n");
}
};
返回This is B.