【C++】基類與子類拷貝建構函式的呼叫順序
阿新 • • 發佈:2019-02-17
先看一段程式碼:
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
cout<<"Base()\n";
m_a=0;
}
Base(const Base& obj)
{
cout<<"Base(const Base& )\n";
m_a=1;
}
int m_a;
};
class Derive : public Base
{
public:
Derive()
{
cout<<"Derived()\n";
m_b=0;
}
Derive(const Derive& obj):Base(obj)
{
cout<<"Derive(const Derive& )\n";
m_b=1;
}
int m_b;
};
int main(int argc, char *argv[])
{
Base base;
Derive derive1;
Derive derive2(derive1);
system("pause");
return 0;
}
執行結果如下:
由此可見,在呼叫子類拷貝建構函式時(注意:Base(obj)),先呼叫了父類的拷貝建構函式,對子類中父類的資料進行拷貝。