假設我們有一個來自抽象基類的派生類。指向抽象基類的指針在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