Tag: 多态

C多种类型的function

我想在C中编写一些函数,但它们必须适用于所有数字类型(int,float,double)。 什么是好习惯? 在void上使用指针(当然还有指向函数的指针)? 或者为每种类型写一个不同的function? 例如: float func(float a, float b) { return a+b; }

什么事情(或在什么情况下)可以使C ++比C慢?

这是一个面试问题,面试已经完成。 什么东西可以使C ++比C慢? 面试官问得很深,每当我说些什么时总是问“别的什么?”。 我的想法: C中没有的C ++function可能会有一些成本。 例如,如果我们使用赋值来在构造函数内初始化类的成员而不是初始化列表,则可以在构造函数的主体之前调用成员的默认构造函数,然后通过赋值消除该值。 需要通过搜索虚函数指针来调用虚函数。 这是一个开销。 还有更好的想法? 任何帮助将不胜感激。 谢谢 !!!

在C ++抽象类中实现回调(对于C库)为纯虚拟

我在使用C音频库时遇到了问题(使用ASIO SDK构建的PortAudio,但这与这个问题并不相关;技术细节只会妨碍我提出这个问题) 。 简单地说,来自该库的某个C函数需​​要我给它一个回调函数,该函数返回一个值并接受某些参数; 为了清楚起见,让我们说回调应该是这样的: int callback(int arg) 并且对库函数的调用如下所示: theCLibraryFuntion(foo, bar, callback); 使用这样的库(即以程序C风格的方式)工作正常,但我想在结构良好的C ++类中包装与我相关的库函数。 我需要图书馆的项目是迄今为止我所做过的最大的项目,所以OO-design对我来说是必须的。 我想在C ++中创建一个抽象类,它为要实现的派生类提供纯虚函数,然后让这个实现用于知道库的类的回调。 换句话说,我需要实际的多态性而不是令人讨厌的函数指针。 到目前为止,我还没能写出这样的课程。 编译器不允许我将任何类的非静态成员函数作为回调传递给C库函数。 我理解为什么,但我想知道一些解决方法。 只要该解决方法,如果它存在,给我前端类的多态行为,我不关心后端代码变得多么邪恶。 如果不存在这样的解决方法,那就这样吧。 我非常了解C在后台如何工作,但我对C ++中OOfunction的技术性知之甚少,因此我将假设有一种方法。 提前致谢! 注意:一个会增加大量开销的解决方法对我来说可能毫无价值。 我被迫使用这个C portaudio库,因为它是唯一一个能够为我的项目所需的音频流提供极低延迟的API,因此大幅度增加开销并不是一个真正的选择。