什么时候编译器会合成派生类的构造函数
1.派生类继承的基类中缺省的构造函数时
站在用户的角度思考问题,与客户深入沟通,找到栾川网站设计与栾川网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖栾川地区。
源代码:
#include
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
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
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
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
在看看汇编
名称栏目:什么时候编译器会合成派生类的构造函数
转载来源:http://pwwzsj.com/article/ijooss.html