虚函数与重载函数的区别与联系

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:42:51

虚函数在基类中声明 用virtual修饰 但是并不实现 ,只是在子类继承基类时才实现

重载函数是基类中已经有某个函数,当子类继承时重新实现(基类已实现)覆盖基类的方法。

虚函数和重载在子类和基类中的方法同名,参数类型相同,返回值类型相同。个人感觉 虚函数是一种特殊的重载,即必须被重载的函数(一般函数可以不被重载)

虚函数在基类中声明 用virtual修饰 但是并不实现 ,只是在子类继承基类时才实现

重载函数是基类中已经有某个函数,当子类继承时重新实现(基类已实现)覆盖基类的方法。

这是一楼的两个定义,非常正确,书上是这样定义的

虚函数之所以存在,是因为要实现类对象的多态性,看看下面的一个程序段,你就知道虚函数有什么用了:
class A{
public:
virtual void f(){cout << "A::f" << endl;};
};

class B:public A{
public:
virtual void f(){cout << "B::f" << endl;};
};
class C:public A{
public:
virtual void f(){cout << "C::f" << endl;};
};
void test(A *a){
a->f();
};
int main(int argc, char* argv[])
{
B *b=new B;
C *c=new C;
char choice;
do{
cout<<"type B for class B,C for class C:"<<endl;
cin>>choice;
i