我有一個關於這個問題:C++繼承問題
class A
{
int a;
int* pa;
public:
A(int i):a(i) , pa(new int(a))
{
cout<<"A ctor"<<a<<endl;
}
~A()
{
delete pa;
cout<<"dtor\n";
}
int * &get()
{
return pa;
}
};
class B : public A
{
int b;
public:
B (A obj): A(obj) , b(0)
{
cout<<"B ctor\n";
}
~B()
{
cout<<"B dtor\n";
}
};
int main()
{
int i = 23 ;
A* p = new B(i);
}
能告訴我爲什麼在main
編譯的最後一行?我將int
傳遞給B
的構造函數,該構造函數需要使用A
對象。我相信int
在B
的構造函數中被翻譯爲A
,但爲什麼?
在此先感謝。
Avri。
偉大的tnx,所以例如,如果我添加而不是int其他類型,如char *行不會編譯becasue A沒有適當的c'tor來處理上述類型。 – Avri 2011-02-05 10:33:21