1478得票18回答
在构造函数中进行虚函数调用

我从ReSharper收到一个警告,说我的对象在构造函数中调用了虚成员。 为什么这样做会有问题?

13得票1回答
在性能方面,虚拟方法和std :: function成员变量相比如何?

游戏引擎有这个类:class MouseListener{ public : MouseListener(); virtual void OnMouseDown(int mx,int my); virtual void OnMouseUp(int mx,int my); . . . }; 每...

29得票6回答
C++带有虚方法的对象大小

我对使用虚函数时对象大小有一些疑问。 1)虚函数class A { public: int a; virtual void v(); } 类 A 的大小为 8 字节,其中包含一个整数 (4 字节) 和一个虚拟指针 (4 字节)。class B: p...

9得票4回答
赋值运算符是否适用于不同类型的对象?

class A { public: void operator=(const B &in); private: int a; }; class B { private: int c; } 抱歉,出现了错误。赋值运算符是否有效?或者有其他方法可以实现吗?[A类和B类之间没有关...

35得票5回答
重载虚函数和隐藏非虚函数有什么区别?

在给定的代码片段中,这些函数调用有什么区别?什么是函数隐藏?什么是函数重写?它们与函数重载有何关系?两者之间有什么区别?我找不到一个好的地方来描述这些内容,所以在这里询问,以便我可以整合信息。class Parent { public: void doA() { cout <...

10得票2回答
何时会破坏二进制兼容性?

我曾认为,每当您进行以下操作之一时: 添加一个新的公共虚拟方法 virtual void aMethod(); 添加一个新的公共非虚拟方法 void aMethod(); 从接口实现一个公共纯虚拟方法 virtual void aMethod override; 实际上会破坏二进制兼容...

13得票1回答
C++纯虚函数调用的性能变异

我需要设计和开发一个C++模块,它将在实时环境中使用(在现代多核PC上运行)。我设计时创建了C++接口(仅具有纯虚成员函数的类),并使用依赖注入以便能够使用Google Mock Framework进行测试。我知道这种方法与静态绑定相比会产生运行时性能开销,但可测试性是一个重要因素。 在开发...

7得票6回答
为什么在C++中要使用虚函数?

这不是关于它们如何工作和声明的问题,我认为这一点已经非常清楚了。问题在于为什么要实现这个? 我想实际原因是为了简化其他代码的关系和声明它们的基本类型变量,以处理来自许多其他子类的对象及其特定方法? 这是否可以通过模板化和类型检查来完成,就像我在Objective C中所做的那样?如果可以,...

8得票4回答
这种间接函数调用有什么优势?

我在一个库中找到了以下代码: class Bar { public: bool foo(int i) { return foo_(i); } private: virtual bool foo_(int i) = 0; }; 现在我在想:为什么要使用这种间接方式?上述方...

9得票8回答
如何避免在基础构造函数中调用虚拟方法

我在一个库中有一个抽象类。我试图使其尽可能易于正确实现该类的派生类。问题是我需要通过三个步骤来初始化对象:获取文件,执行一些中间步骤,然后处理文件。第一步和最后一步特定于派生类。以下是一个简化的示例。 abstract class Base { // grabs a resource...