1.派生类继承的基类中缺省的构造函数时


源代码:

#include <iostream>

using namespace std;


class Base

{

public:

Base()

{ }

void FunTest()

{ }

int m_a;

};


class Der : public Base

{

public:

void FunTest1()

{ }

};


void Test()

{

cout << "********" << endl;

Der d;

}


int main()

{

Test();


getchar();

return 0;

}


看看汇编


如果去掉基类中

Base()

{ }

在看看汇编


2.派生类虚拟继承基类时

代码:

#include <iostream>

using namespace std;


class Base

{

public:

void FunTest()

{ }

int m_a;

};


class Der : virtual public Base

{

public:

void FunTest1()

{ }

};


void Test()

{

cout << "********" << endl;

Der d;

}


int main()

{

Test();


getchar();

return 0;

}


看看汇编


如果去掉继承列表中的virtual

在看看汇编


3.派生类中有其他类类型的成员(该类有缺省的构造函数)时

代码:

#include <iostream>

using namespace std;


class Base

{

public:

void FunTest()

{ }

int m_a;

};


class T

{

public:

T()

{ }

void FunTest()

{ }

int m_a;

};


class Der :public Base

{

public:

void FunTest1()

{ }


T test;

};


void Test()

{

cout << "********" << endl;

Der d;

}


int main()

{

Test();


getchar();

return 0;

}

看看汇编


如果去掉T类中

T()

{ }

在看看汇编


4.派生类或基类中有虚函数的出现时


代码:

#include <iostream>

using namespace std;


class Base

{

public:

virtual void FunTest()

{ }

int m_a;

};


class Der :public Base

{

public:

void FunTest1()

{ }

};


void Test()

{

cout << "********" << endl;

Der d;

}


int main()

{

Test();


getchar();

return 0;

}

看看汇编


如果去掉Base类函数FunTest()前的virtual

在看看汇编