2011-10-05 34 views
3

我從一個C#的背景,我會寫的類和構造這樣的未來:繼承構造函數:從C#轉換爲C++

public class Grunt : GameObject 
{ 
    public Grunt() 
     : base() 
    { 
     // do stuff 
    } 
} 

我怎樣寫C++中的構造函數繼承?在標題和來源中。我知道你沒有使用「基本」關鍵字,但其他語法是否一樣?

回答

6
class Grunt : public GameObject 
{ 
    Grunt() 
     : GameObject() // Since there are no parameters to the base, this line is actually optional. 
    { 
     // do stuff 
    } 
} 

,並強烈考慮購買的精C++的書之一,在The Definitive C++ Book Guide and List

+0

'在標題和源文件中.' –

5

是,與: GameObject()更換: base()

但是,如果沒有參數,調用是隱含的,如C#

3

你在的地方「基地」關鍵字的使用基類的名稱。這是必要的,因爲C++中有多重繼承的可能性。在多個基類的情況下,可以通過逗號分隔調用來調用多個基類構造函數。

1

頭:

template <int unique> 
class base { 
public: 
    base(); 
    base(int param); 
}; 

class derived: public base<1>, public base<2> { 
public: 
    derived(); 
    derived(int param); 
}; 

源:

base::base() 
{} 

base::base(int param) 
{} 

derived::derived() 
: base<1>() 
, base<2>() 
{} 

derived::derived(int param) 
: base<1>(param) 
, base<2>(param) 
{} 

這澄清了如何從多個類繼承,從模板類繼承,構造基類,示出了如何將參數傳遞到基礎構造,和顯示爲什麼我們必須使用基地的名稱。