#include <iostream>
using namespace std;
class A{
public:
virtual void print(){
cout<<"a"<<endl;
}
//
virtual void print(int){//当没有这一部分时,下面调用类B的带参成员函数时就会报错,为什么?
cout<<"这是类A自己定义的一个函数!"<<endl;
}
//
};
class B:public A{//自己定义一个函数,并输出结果???
public:
void print(int){
cout<<"这是类B自己定义的一个函数!"<<endl;
}
};
class C:public A{
public:
void print(){
cout<<"c"<<endl;
}
};
class D:public A{
public:
void print(){
cout<<"d"<<endl;
}
};
int main()
{
A a;
B b;
C c;
D d;
A *p=&a;
A *p1=&b;
A *p2=&c;
A *p3=&d;
p->print();
//p1->print();
p1->print(1);//'print' : function does not take 1 parameters?
p2->print();
p3->print();
return 0;
}
程序运行出现错误:(代码p1->print(1)所在行)
C++ 虚函数 派生类的调用
最新推荐文章于 2023-04-25 14:56:58 发布
本文探讨了C++中虚函数的概念及其在派生类中的应用。当通过基类指针调用派生类的成员函数print()时,由于基类A中的print()是虚函数,实现了动态绑定,能够正确调用派生类的print()。然而,类B中非继承自A的print(int)函数不在虚函数列表中,导致无法通过基类指针调用,引发运行错误。解决方法是将print(int)声明为虚函数。
摘要由CSDN通过智能技术生成