2015-11-21 81 views
0

看看下面的代碼:如何讓財產在派生類中創建使用指針基於類C++

class A 
{ 
public: 
    virtual int getN();// have to write it's body, but how? 
}; 

class B : public A 
{ 
private: 
    int n = 2; 
public: 
    int getN() { return n; } 
}; 

int main() 
{ 
    B b; 
    A *p = &b; 
    p->getN(); 
} 

通常virtual函數是一個很好的解決方案。但是,當基類不擁有由派生類創建的新屬性時,如何從指向基類的指針訪問新屬性?

回答

1

您可以在基礎中使用純虛函數聲明,然後您不必爲函數提供正文,儘管您仍然可以。

virtual int getN() = 0; 

「獲取」功能,如果他們存在於一切,平時應該是const:

virtual int getN() const = 0; 

如果你這樣做,你就無法直接實例化的基類。您可以擁有該類型的指針和引用,但絕不會有對象。

相關問題