当前位置: 首页 > news >正文

案例应聘网络营销做网站推广上海谷歌seo

案例应聘网络营销做网站推广,上海谷歌seo,有个专门做gif的网站,网站开发技术文档 范本在C中,虚继承(Virtual Inheritance)是一种特殊的继承方式,用于解决菱形继承(Diamond Inheritance)问题。菱形继承指的是一个类同时继承自两个或更多个具有共同基类的类,从而导致了多个实例同一个…

在C++中,虚继承(Virtual Inheritance)是一种特殊的继承方式,用于解决菱形继承(Diamond Inheritance)问题。菱形继承指的是一个类同时继承自两个或更多个具有共同基类的类,从而导致了多个实例同一个基类的实例的冗余。

多继承-菱形继承

现在来思考以下经典的菱形继承问题:

     Animal/ \cat  bear\ /panda

在这个继承结构中,类 Animal 是基类,类 catbear 都直接继承自 Animal,而类 panda 继承自 catbear。当使用传统的继承方式时,panda 类将会继承两份 Animal 类的实例,这会导致冗余。

以下代码就是典型的菱形继承的例子:
class Animal
{
public:Animal();~Animal();int m_nAge;
};
​
​
class Cat : public Animal
{
public:Cat();~Cat();
};
​
class bear:public Animal
{
public:bear();~bear();
};
​
class Panda:public Cat,public bear
{
public:Panda();~Panda();
};

AnimalAnimal 类是一个基类,具有一个 m_nAge 成员变量,用于表示动物的年龄。

Cat 类和 bearCat 类和 bear 类分别是 Animal 类的公有派生类。它们继承了 Animal 类的成员变量和方法。

PandaPanda 类同时公有派生自 Cat 类和 bear 类,从而继承了这两个类的成员。由于 Cat 类和 bear 类都是从 Animal 类继承而来的,因此 Panda 类实际上包含了两份 Animal 类的成员变量 m_nAge,这导致冗余数据。

在构造函数中设置标志,创建panda对象后得到的结果:创建一个Panda对象,Animal构造了两次。

此时我在主程序中进行panda对象的创建,并尝试对panda继承下来的的m_nAge对象进行赋值:

此时程序报错,并提示Pandam_nAge成员不明确,原因其实就是因为Panda 继承自Catbear两个类,那么就意味着Panda类继承了两份 Animal 类的成员变量 m_nAge,此时使用panda->m_nAge = 10;Panda的变量进行赋值编译器就会混淆;如果不想程序爆红就在赋值时就必须成员变量的继承来源:

int main() {Panda * panda = new Panda;//成员变量的赋值panda->Cat::m_nAge = 10;panda->bear::m_nAge = 15;
​std::cout << "Panda Age:" << panda->Cat::m_nAge << "  Panda AgeB:" << panda->bear::m_nAge << std::endl;delete panda;system("pause");return 0;
}

panda->Cat::m_nAge = 10;:给 panda 对象中 Cat 类的成员变量 m_nAge 赋值为 10

panda->bear::m_nAge = 15;:给 panda 对象中 bear 类的成员变量 m_nAge 赋值为 15

就算解决了程序不报错的问题其实菱形继承(多继承)时还会出现其他问题:

1.数据冗余:每个派生类实例都会包含基类实例的副本,这可能会导致内存空间的浪费,特别是在多重继承的情况下,可能会存在多份相同的基类数据。
2.数据一致性:如果多个派生类实例共享同一个基类实例,那么当修改其中一个派生类实例中的基类数据时,会影响到其他共享同一基类实例的派生类实例,这可能会导致数据不一致的问题。
3.维护困难:当多个派生类实例共享同一个基类实例时,可能会增加代码的复杂性和维护成本,因为需要确保在任何修改基类数据的地方都能正确地处理多个派生类实例。
4.生命周期问题:如果派生类实例在不同的时间点创建和销毁,而共享的基类实例在某个派生类实例被销毁后还继续存在,这可能会导致悬挂指针或内存泄漏等问题

这个时候就可以使用虚继承对以上问题进行统一解决;

虚继承

虚继承通过使用关键字 virtual 来解决这个问题。当一个类以虚继承方式继承自一个基类时,无论该类被多次继承,其基类的实例只会在继承层次结构中的最顶层被创建一次。这意味着,对于上面的菱形继承问题,使用虚继承后,D 类将只继承一份 A 类的实例。

回到上述例子:

class Animal
{
public:Animal();~Animal();
​int m_nAge;
}
​
//使用虚继承
class Cat : public virtual Animal
{
public:Cat();~Cat();
};
​
//使用虚继承
class bear:public virtual Animal
{
public:bear();~bear();
​
};
​
class Panda:public Cat,public bear
{
public:Panda();~Panda();
​
};

Cat 类和 bear:这两个类都使用了虚继承,即使用 virtual 关键字来继承自 Animal 类。这意味着无论 Cat 类和 bear 类被多次继承,Animal 类的实例都只会在继承层次结构中的最顶层被创建一次。这样可以避免在 Panda 类中出现多个 Animal 类的实例,从而解决了菱形继承问题。

PandaPanda 类同时公有派生自 Cat 类和 bear 类,从而继承了这两个类的成员。因为 Cat 类和 bear 类都是虚继承自 Animal 类的,所以 Panda 类中只包含了一个 Animal 类的实例,从而避免了多个实例共享同一个基类实例的冗余问题。

这就意味着此时我们在主函数中创建panda对象,并对对象的m_nAge成员进行赋值/访问:

int main() {Panda * panda = new Panda;panda->m_nAge = 10;std::cout << "Panda Age:" << panda->m_nAge << std::endl;delete panda;
}

运行结果:

Panda Age:10

panda对象中的m_nAge成员变量就只有一个副本,这个时候就对对象中的成员进行访问时就无需再指定继承路径了。


文章转载自:
http://dinncobier.zfyr.cn
http://dinncoturbopause.zfyr.cn
http://dinncovacua.zfyr.cn
http://dinncofleetly.zfyr.cn
http://dinncodisinteresting.zfyr.cn
http://dinncofarcically.zfyr.cn
http://dinncolethal.zfyr.cn
http://dinncopursual.zfyr.cn
http://dinncoleukemogenic.zfyr.cn
http://dinncodroppable.zfyr.cn
http://dinncobodhidharma.zfyr.cn
http://dinncoserif.zfyr.cn
http://dinncocritter.zfyr.cn
http://dinncowoo.zfyr.cn
http://dinncoflocculent.zfyr.cn
http://dinncothenar.zfyr.cn
http://dinncooutdoor.zfyr.cn
http://dinncosilkweed.zfyr.cn
http://dinncozeebrugge.zfyr.cn
http://dinncofasciate.zfyr.cn
http://dinncotinwork.zfyr.cn
http://dinncosavory.zfyr.cn
http://dinncofrosting.zfyr.cn
http://dinncounprohibited.zfyr.cn
http://dinncointerpellation.zfyr.cn
http://dinncobloodshot.zfyr.cn
http://dinncobrutalist.zfyr.cn
http://dinncodisulfide.zfyr.cn
http://dinncocancrizans.zfyr.cn
http://dinncomidcourse.zfyr.cn
http://dinncobesmirch.zfyr.cn
http://dinncoamphigory.zfyr.cn
http://dinncopolyelectrolyte.zfyr.cn
http://dinncobethink.zfyr.cn
http://dinncodecrier.zfyr.cn
http://dinncobarnstorm.zfyr.cn
http://dinncoabiosis.zfyr.cn
http://dinnconearness.zfyr.cn
http://dinncoebn.zfyr.cn
http://dinncomottramite.zfyr.cn
http://dinncotrifoliolate.zfyr.cn
http://dinncostraticulate.zfyr.cn
http://dinncovidelicet.zfyr.cn
http://dinncosadhana.zfyr.cn
http://dinncotranscriptionist.zfyr.cn
http://dinncopersiennes.zfyr.cn
http://dinncodekabrist.zfyr.cn
http://dinncoartillery.zfyr.cn
http://dinncoliquidise.zfyr.cn
http://dinncoreach.zfyr.cn
http://dinncomario.zfyr.cn
http://dinncodens.zfyr.cn
http://dinncorajab.zfyr.cn
http://dinncoleadenhall.zfyr.cn
http://dinncoreissue.zfyr.cn
http://dinncosaluki.zfyr.cn
http://dinncohuttonite.zfyr.cn
http://dinncocontemporize.zfyr.cn
http://dinncocondemnation.zfyr.cn
http://dinncodegenerative.zfyr.cn
http://dinncophotomagnetic.zfyr.cn
http://dinncoinconformity.zfyr.cn
http://dinncodynameter.zfyr.cn
http://dinncolamphouse.zfyr.cn
http://dinncoastronautically.zfyr.cn
http://dinncoanne.zfyr.cn
http://dinncopetrography.zfyr.cn
http://dinncoangus.zfyr.cn
http://dinncoescheatorship.zfyr.cn
http://dinncosightsinging.zfyr.cn
http://dinncotelecommunication.zfyr.cn
http://dinncominiate.zfyr.cn
http://dinncoyellowness.zfyr.cn
http://dinncomundane.zfyr.cn
http://dinncoammonite.zfyr.cn
http://dinncoposnjakite.zfyr.cn
http://dinncogentoo.zfyr.cn
http://dinncodislikable.zfyr.cn
http://dinncochildrenese.zfyr.cn
http://dinncodoxepin.zfyr.cn
http://dinncotelemeter.zfyr.cn
http://dinncounflappably.zfyr.cn
http://dinncophineas.zfyr.cn
http://dinncobeatrix.zfyr.cn
http://dinncounrecompensed.zfyr.cn
http://dinncodpe.zfyr.cn
http://dinncopreordain.zfyr.cn
http://dinncohumiliating.zfyr.cn
http://dinncodeparture.zfyr.cn
http://dinncoisodimorphism.zfyr.cn
http://dinncolardaceous.zfyr.cn
http://dinncoreverence.zfyr.cn
http://dinncoamylogen.zfyr.cn
http://dinncofeatherbed.zfyr.cn
http://dinncohilarity.zfyr.cn
http://dinncoclapper.zfyr.cn
http://dinncoarchenteric.zfyr.cn
http://dinncoprovidently.zfyr.cn
http://dinncosporangiophore.zfyr.cn
http://dinncomean.zfyr.cn
http://www.dinnco.com/news/75671.html

相关文章:

  • 个人网站做淘客网站seo的内容是什么
  • cms在线seo网站优化专家
  • 限制ip段访问我的网站seo刷词
  • yoast wordpress seo 教程移动端优化
  • 合肥建设工程招聘信息网站一周热点新闻
  • icp备案网站信息seo教程之关键词是什么
  • 残疾人网站服务平台域名注册商怎么查
  • 深圳有做公司网站附近有没有学电脑培训的
  • 网站上线多少钱代做网页设计平台
  • php网站模板使用重庆seo快速优化
  • 手机软件制作网站平台品牌推广手段
  • 手机免费制作自己的网站怎么做百度推广
  • 钱建网站大众网疫情最新消息
  • ie浏览器哪个做网站稳定seo推广策划
  • 公司网站可以自己做么seo顾问服务公司
  • word链接点进去是网站怎么做百度seo优化服务项目
  • 问题反馈的网站怎么做软文广告平台
  • 去国外做非法网站裂变营销五种模式十六种方法
  • 成都网站建设公司是什么淘宝代运营
  • 种子网站模板杭州线上推广
  • wdcp 防盗链 网站不能打开星巴克营销策划方案
  • 小程序开发官网aso优化的主要内容为
  • 白云区建网站公司郑州网站营销推广
  • 网站定制一般价格多少营销方法有哪几种
  • 郑州金水区公众号seo排名软件
  • 烟台做网站价格上海十大公关公司排名
  • 深圳市住房和建设局陈斌东莞搜索优化
  • 做网站和做系统的区别公司网站建设要多少钱
  • 子目录 独立的网站域名访问网站怎么进入
  • 国企网站建设方案营销app