假设我们有一个来自抽象基类的派生类。指向抽象基类的指针在main中声明并通过“new”分配给派生类。如何从指向基类的指针(而不是派生类的对象)访问派生类的成员函数?多态性:你如何访问派生类成员函数?
例子:
#include <iostream>
using namespace std;
class clsStudent
{
public:
virtual void display() = 0;// {cout<<"Student\n";}
};
class clsInternational : public clsStudent
{
public:
void display(){cout<<"International\n";}
void passportNo(){cout<<"Pass\n";}
};
class local : public clsStudent
{
public:
void display(){cout<<"International\n";}
void icNo(){cout<<"IC\n";}
};
int main()
{
clsStudent * s = new clsInternational;
clsStudent * s2 = new local;
s->display();
s->passportNo(); //This won't work
return 0;
}
这违背多态性的整个想法。如果要访问派生类函数,则必须将指针转换为派生类型。 –
函数'passNo()'没有在'clsInternational','local'和'clsStudent'类中定义。这是一个错字吗?如果是这样,它应该是什么? – Oswald
@Oswald - 关于它应该是s-> passportNo() – user3025784