草庐IT

C++:虚拟继承

全部标签

c++ - 覆盖非虚拟函数是否曾经是 "moral"?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。我长期使用以下C++经验法则:Ifaclassoverridesafunctioninitsbaseclass,thefunctionshouldbedeclaredvirtualinthebase.我想我遇到了这条规则的异常(exception)情况。为了判断这是否合理,或者指出我的设计存在缺陷,我在问这个问题。我想获得示例或更好的规则。编辑:我试着在这里描述我的用例,我明白我真的不需要继承!

VR虚拟现实:VR技术如何进行原型制作

VR虚拟现实原型制作利用VR虚拟现实软件进行原型制作可以用于增强原型测试期间的沉浸感,减少产品设计迭代次数,并将与产品原型制作相关的成本降低40-65%。VR虚拟现实原型制作市场规模用于原型制作的虚拟现实(VR)市场在2017年估计为2.104亿美元,预计到2025年将以19.4%的复合年增长率增长。据统计有96%的企业已经开始利用VR技术进行原型制作。利用VR虚拟现实进行原型制作是VR大市场规模下的重要细分市场。VR虚拟现实在原型制作方面的应用虚拟样机允许更便宜和更快地设计和修改零件或元素以及产品的完整模型,这些产品将用于各行各业,包括:航空航天:飞机和航天器的VR原型制作。汽车:汽车和其他

跨平台手动迁移虚拟机

虚拟机跨平台迁移描述:将FusionSphere平台上虚拟机迁移至fusioncompute平台。此环境为两个平台共用一套san存储。将待迁移虚拟机关机通过平台或登录虚拟机进行关机操作。确认虚拟机关机状态novalist--all-t|grepIP查询虚拟机所在主机通过平台或后台管理节点命令查询novalist–all-t|grepIP;novashow虚拟机ID|grephypervisor_hostname;cpshost-list|grep物理机名称;确认待迁移虚拟机的云磁盘novavolume_attachmentsserverIDcindershowvolumeID通过存储管理平台将

c++ - 为什么fstream不是继承自c++中的ifstream和ofstream?

ifstream和ofstream用于文件中的输入和输出,而fstream可以完成它们的任务但不是继承自ifstream和ofstream,这是代码重复还是别的什么? 最佳答案 您必须向作者BjarneStroustrup寻求明确的答案。在他发表于1985年USENIXProceedings的关于iostreams的原始论文中,他似乎非常强调效率:Inlineexpandedfunctionsareusedforthebasicoperations(like"putacharacterintoabuffer"),sothebasic

c++ - 多重继承使私有(private)成员可访问

classA{public:inta;};classB:privateA{};classC:publicA{};classD:publicB,publicC{D(){B::a=0;}};即使B私下继承了A,也可以编译。如果我删除D对C的继承,编译器会说a不可访问,正如我所期望的那样。那么C的继承是否混淆了我的编译器?编译器是gcc4.4.7 最佳答案 看起来像一个真正的编译器错误,因为标准不允许这样的访问11.2Accessibilityofbaseclassesandbaseclassmembers在标准本身之外寻找证据,Whoz

c++ - 多重继承不明确的基类

考虑代码structBase{};structDerived:publicBase{};structA:publicBase{};structB:publicA,publicBase{};structC:publicA,publicDerived{};//whynoambiguityhere?intmain(){}编译器(g++5.1)警告warning:directbase'Base'inaccessiblein'B'duetoambiguitystructB:publicA,publicBase{};我明白了,Base在B中重复了。为什么C没有警告?C不是同时继承自A和Derive

C ++中的多态性。在基类上调用继承的方法

我正在尝试实现一个简单的文件系统。我有一个基类条目。我有两个从称为文件和目录的条目继承的类。目录包含条目对象列表。我有一种称为目录和文件的称为更改的方法,但没有输入。我希望我可以在输入对象上调用此方法,并且编译器会根据条目是目录还是文件来知道使用哪种方法。有什么方法可以做到这一点?classEntry{public:std::chrono::time_pointdateCreated;std::stringfileName;Entry(std::stringname);~Entry();};Directory*Directory::changeDir(Directory*dir,Directo

c++ - 具有多重继承的协变返回类型。这段代码是如何工作的?

谁能告诉我返回类型协变在以下代码中是如何工作的?classX{public:intx;};classY:publicOtherClass,publicX{};staticYinst;classA{public:virtualX*out()=0;};classB:publicA{public:virtualY*out(){return&inst;}};voidmain(){Bb;A*a=&b;//xandyhavedifferentaddresses.howandwhenisthisconversiondone??Y*y=b.out();X*x=a->out();}编辑:对不起,我一定不

c++ - 多重继承 : 2Classes1Method

我刚刚试过这段代码:structFaceOfPast{virtualvoidSmile()=0;};structFaceOfFuture{virtualvoidSmile()=0;};structJanus:publicFaceOfPast,publicFaceOfFuture{virtualvoidSmile(){printf(":)");}};...voidmain(){Janus*j=newJanus();FaceOfFuture*future=j;FaceOfPast*past=j;future->Smile();past->Smile();deletej;}它按预期工作(输出

C++ 嵌套结构继承规则(访问 protected 成员)

这个问题在这里已经有了答案:Protecteddatainparentclassnotavailableinchildclass?(4个答案)关闭5年前。谁能给我解释一下为什么(比如,“为什么语言是这样的?”)下面的代码在B::C::bar的第二行有一个编译错误?classA{public:structD{voidcall_foo(A&a){a.foo();}};protected:voidfoo(){}};classB:publicA{structC:publicA::D{voidbar(A&a,B&b){b.foo();//OKa.foo();//Error.Huh?call_fo