什么时候编译器会合成派生类的构造函数-创新互联
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
在看看汇编
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:什么时候编译器会合成派生类的构造函数-创新互联
文章转载:http://myzitong.com/article/godio.html