2012-11-16 66 views
-2

假設有A類和B類繼承A.什麼是使用B對象的正確方法? 我已經看到了「cplusplus.com」,他們正在「使用」 B的對象是這樣的:多態性,C++

B b; 
A* a=&b; 

有什麼用「A」級指針和使用B之間有什麼區別?

謝謝!

+0

從這裏開始http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – 2012-11-16 17:04:36

+0

請先閱讀一些介紹性書籍。 – Nawaz

+0

多態性有什麼意義? – xvatar

回答

2

當你有虛函數時,使用指向基類的優點就來了。 現在想象一下以下

class A { 
    A(){} 
    virtual ~A(){} // note virtual destructor 
    virtual void func(){ cout << "A func" << endl; } 
}; 

class B : public A { 
    B(){} 
    virtual ~B(){} 
    virtual void func(){ cout << "B func" << endl; } 
}; 

class C : public A { 
    C(){} 
    virtual ~C(){} 
    virtual void func(){ cout << "C func" << endl; } 
} 

,如果我們有一個指向基類,我們可以在A,一個BC調用它和正確的功能取決於是否指針實際指向名爲func()。例如:

A* p1 = new A; 
A* p2 = new B; 
A* p3 = new C; 
p1->func(); 
p2->func(); 
p3->func(); 

將輸出以下

A func 
B func 
C func 

現在你可能會說爲什麼不使用三種不同的指針A,B和C類型分開,但如果你想要一個指針數組?然後他們都需要是相同的類型,即A*。這種多態性對於將功能或精神相似但執行不同的事物進行分組很有用。

2

他們只是這樣做,以表明你可以,並且當你這樣做時,多態性被調用。

如果您只是想使用您的B b,請使用它;沒有A*需要。

順便說一句,從互聯網教程學習C++就像學習如何通過分析你在街上發現的一些口香糖來做飯。首選a proper, peer-reviewed book