2013-03-19 19 views
1

調用函數我有類A和B.從基類

class A{ 
public: 
    foo(); 
}; 

class B : public A{ 
public: 
    int x; 
}; 

假定有選自B類的對象在測試file.How我應該調用foo函數?

object.foo(); // or 
object.A::foo(); 

其他問題:? 我們什麼時候叫這樣的一個功能,如果我做的多重繼承?

+3

您有什麼問題?這是非常基本的,你應該嘗試一下。更不用說讀[你的C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)... – 2013-03-19 16:51:08

+0

我會極力鼓勵你去到最後鏈接我在我的答案中加入了關於'C++中的私有,公共和受保護繼承'之間的區別 – 2013-03-19 17:15:47

回答

1

B類繼承了A類的公共成員,因此功能foo()也屬於B類,可以採用B類的對象調用。

B b; 
b.foo(); 

你需要知道inheritance in c++.它只是相同

b.x; 

xfoo()都是對象b的成員甚至b是B類的對象及其可能的,因爲從類B類繼承特徵A,在你的代碼功能foo()

注意 A類只有一個成員函數foo()

A a; 
a.foo(); 

是有效的,但

a.x; 

無效

編輯:多級繼承C類繼承B類和B類繼承A類,然後

class C : public B{ 
public: 
    int y; 
}; 

C c; 
c.foo(); // correct 

也有效。

而且

c.x; 
c.y; 

也是有效的,xyfoo()都是C.類

通知的成員:我告訴你,是多層次的Multiple inheritance in C++是不同的。在繼承的情況下,C++中的三個訪問說明符也非常重要:public private protected in c++

3

簡單object.foo(),並沒有太多的更多的補充:

B object; 
object.foo();