做网站的是外包公司吗,公司申请域名流程,怎样把网站提交到百度,做网站买域名怎么弄菱形继承 and 虚继承 菱形继承介绍菱形继承源码菱形继承运行结果 虚继承介绍虚继承源码虚继承运行结果 菱形继承介绍 本文主要介绍菱形继承基本操作(仅附源码 and 运行结果) 1.正常菱形继承 会产生 在孙子类 中产生两个 不同的基类 菱形继承逻辑图 菱形继承源码
#include… 菱形继承 and 虚继承 菱形继承介绍菱形继承源码菱形继承运行结果 虚继承介绍虚继承源码虚继承运行结果 菱形继承介绍 本文主要介绍菱形继承基本操作(仅附源码 and 运行结果) 1.正常菱形继承 会产生 在孙子类 中产生两个 不同的基类 菱形继承逻辑图 菱形继承源码
#includeiostream
#includestringusing namespace std;
//基类 A(爷爷类)
class A
{
public:A(){cout A构造 endl;}~A(){cout A析构 endl;}int m_a;
};
//子类 X(父类)
class X:public A
{
public:X(){cout X构造 endl;}~X(){cout X析构 endl;}
};
//子类 Y(母类)
class Y :public A
{
public:Y(){cout Y构造 endl;}~Y(){cout Y析构 endl;}
};
//子类 Z(孙子类)
class Z :public X, public Y
{
public:Z(){cout Z构造 endl;}~Z(){cout Z析构 endl;}
};
void main()
{
//菱形继承//构造析构流程{Z z;//z.m_a 10;//继承不明确cout ------------分隔符------------ endl;//菱形继承调用方法z.X::m_a 10;z.Y::m_a 20;cout z.X::m_a z.Y::m_a endl;cout ------------分隔符------------ endl;}system(pause);
}菱形继承运行结果
A构造
X构造
A构造
Y构造
Z构造
------------分隔符------------
10 20
------------分隔符------------
Z析构
Y析构
A析构
X析构
A析构
请按任意键继续. . .虚继承介绍 1.加上关键词 virtual 所继承的基类将只构造一次 2.菱形虚继承 只产生一个 基类 2.虚继承逻辑图 3.虚继承 取地址图 虚继承源码
#includeiostream
#includestringusing namespace std;
//基类 A(爷爷类)
class A
{
public:A(){ cout A构造 地址: this endl; }~A(){ cout A析构 endl; }int m_a;
};
//子类 X(父类)
class X:virtual public A
{
public:X(){ cout X构造 地址: this endl; }~X(){ cout X析构 endl; }
};
//子类 Y(母类)
class Y :virtual public A
{
public:Y(){ cout Y构造 地址: this endl; }~Y(){ cout Y析构 endl; }
};
//子类 Z(孙子类)
class Z :public X, public Y
{
public:Z(){ cout Z构造 地址: this endl; }~Z(){ cout Z析构 endl; }
};
void main()
{
//菱形虚继承//构造析构流程{Z z;//z.m_a 10;//继承不明确cout ------------分隔符------------ endl;//虚继承调用方法(此时通过不同的子类调用的 m_a 将是同一个)z.X::m_a 10;z.Y::m_a 20;cout z.X::m_a z.Y::m_a endl;cout 取地址: z.X::m_a z.Y::m_a endl;cout ------------分隔符------------ endl;}system(pause);
}虚继承运行结果
A构造 地址:0075FD70
X构造 地址:0075FD68
Y构造 地址:0075FD6C
Z构造 地址:0075FD68
------------分隔符------------
20 20
取地址:0075FD70 0075FD70
------------分隔符------------
Z析构
Y析构
X析构
A析构
请按任意键继续. . .