我從一個C#的背景,我會寫的類和構造這樣的未來:繼承構造函數:從C#轉換爲C++
public class Grunt : GameObject
{
public Grunt()
: base()
{
// do stuff
}
}
我怎樣寫C++中的構造函數繼承?在標題和來源中。我知道你沒有使用「基本」關鍵字,但其他語法是否一樣?
我從一個C#的背景,我會寫的類和構造這樣的未來:繼承構造函數:從C#轉換爲C++
public class Grunt : GameObject
{
public Grunt()
: base()
{
// do stuff
}
}
我怎樣寫C++中的構造函數繼承?在標題和來源中。我知道你沒有使用「基本」關鍵字,但其他語法是否一樣?
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
是,與: GameObject()
更換: base()
。
但是,如果沒有參數,調用是隱含的,如C#
你在的地方「基地」關鍵字的使用基類的名稱。這是必要的,因爲C++中有多重繼承的可能性。在多個基類的情況下,可以通過逗號分隔調用來調用多個基類構造函數。
頭:
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)
{}
這澄清了如何從多個類繼承,從模板類繼承,構造基類,示出了如何將參數傳遞到基礎構造,和顯示爲什麼我們必須使用基地的名稱。
'在標題和源文件中.' –