2011-10-07 28 views
5

我已經離開了C++一段時間了,而且我對這個有點麻煩。我會告訴你我的壞代碼 - 是否有人可以發佈一個「模型答案」,以便如何使用接受幾個值的構造函數爲小類編寫一個簡單的頭文件和源文件,並將一些代碼傳遞給它類的構造函數?我擔心我在錯誤地提出內容。謝謝。如何編寫C++繼承構造函數

有時候,最簡單的答案是在互聯網上最難找到的明確例子。

+0

爲什麼downvote? –

+0

關於內聯方面,你有什麼擔心的? –

回答

8
// ExampleClass.h 
#ifndef ExampleClass_H_ 
#define ExampleClass_H_ 

#include "ExampleBase.h" 

class ExampleClass : public ExampleBase { 
public: 
    ExampleClass(int a); 
}; 

#endif 


// ExampleClass.cpp 
#include "ExampleClass.h" 

ExampleClass::ExampleClass(int a) : ExampleBase(a) 
{ 
    // other constructor stuff here 
} 
6

initializer list用於初始化基類。在實例成員之前初始化基類。 Non-virtual base classes are initialized from left to right,所以如果你有多個基地,按照他們宣佈的順序進行初始化。

這裏的參數傳遞給基類構造函數的例子:

#include <iostream> 

struct Base { 
    Base(int i) { 
     std::cout << i << std::endl; 
    } 
}; 

struct Derived : public Base { 
    Derived(int i) : Base(i) {} 
}; 
+0

老實說,我有點驚訝,我在C++ FAQ中找不到像這樣的簡單例子。如果任何人可以刪除鏈接到適當的部分,我會很感激。 –

4

看到作爲OP要求非在線版本,我會重新發布修改。

struct Base { 
    Base (int); 
}; 

struct Derived : public Base { 
    Derived (int); 
}; 

Derived :: Derived (int i) 
: Base (i) 
{ 
} 
+0

儘管缺乏投票,這應該是公認的答案。 –

1
class Parent 
{ 
    // Parent Constructor 
    Parent(int x) 
    { 
     // Constructor Code 
    } 
}; 

class Child : public Parent 
{ 
    // Child Constructor 
    Child(int x, int y, int z) : Parent(x) 
    { 
     // Constructor Code 
    } 
};