gpt4 book ai didi

C++ 模板、虚函数、空基

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:00 26 4
gpt4 key购买 nike

仍在掌握 C++ 类的窍门,我想知道实现此目的的最高效的运行时方法是什么:

我有一个派生类,我想实例化一次(在编译时已知),但我想将指针类型转换为基类指针并将其传递给我的程序的其余部分使用。这样,如果我有一个 future 的项目,我想将实例从 animal.dog 更改为 animal.cat,我的代码的所有其他部分仍将能够调用方法 animalPtr->eat(),但实际行为将特定于狗或猫。我只会有 1 个 animal.dog 或 animal.cat 的实例,而且我永远不会有基类动物的实例。

也许我刚刚描述的正是我需要做的事情,但我阅读了一些关于让基类“动物”使用虚函数与​​让基类成为模板类的优缺点的在线争论(在这种情况下甚至不确定如何将其制作成模板……对我来说,模板类看起来像是用于为成员创建通用数据类型,但这不是我在这里需要的)。

有什么帮助吗?请记住,速度性能对我来说是最重要的。

最佳答案

使用虚函数是解决这个问题的面向对象的方法。对于虚函数的通常实现,它添加了另一个指针间接并且使内联变得不可能,所以如果你真的,真的,真的有性能问题并且函数很小并且在紧密循环中调用了数百万次,那么您可能会遇到性能问题。

首先使用虚函数方法。如果这是一个问题(并且您已经测量到这确实是分析器的问题),那么您可以考虑将事情更改为可能更有效的基于模板的方法。

关于C++ 模板、虚函数、空基,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com