1
我在初始化對象時遇到問題。 以下是一段代碼,如何在派生類和基類都具有參數化構造函數時初始化派生類的對象?
#include <iostream>
#include <conio.h>
using namespace std;
class Base
{
public:
Base(int a)
{
m_a = a;
}
private:
int m_a;
};
class Derived:public Base
{
public:
Derived(char a)
{
m_a = a;
}
private:
char m_a;
};
void main()
{
_getch();
}
編譯上述代碼提供了以下錯誤, 錯誤C2512:「基地」:沒有可用的適當的默認構造
我知道自從派生類和基礎類兩者都只有參數化構造函數,我需要在派生類構造函數中初始化基類對象。但我不知道該怎麼做。 任何人都可以請告訴我,在上面的代碼中出了什麼問題?
這是更好的做法是初始化'在**成員初始化列表m_a' * *,而不是在構造函數體中,'m_a'是一個POD,在這種情況下它並不重要,但如果不是這樣,那麼最好使用成員初始化列表作爲演示。 –
@Als:對不起。我根本不是C++的專家。但是不是我使用Memember初始化列表發佈的代碼?如果不是,你可以發表一個答案,解釋正確的做法嗎?我也很感興趣。 – Heisenbug
我剛剛編輯了你的答案,讓它演示了一個更好的方法。我希望你不會介意:)你可能想閱讀[this](http://stackoverflow.com/questions/6724626/c-constructor/6724639#6724639)知道爲什麼我說這是更好的做法。 –