C++:声明成员静态与否?虚拟继承的性能?

C++ : declare members static or not ? performance with virtual inheritance?

我开发了一个 C++ 代码,其主要对象将在更大的程序中调用。 只需要在主机中创建对象的一个​​实例,所以我一直将所有 class 变量和方法声明为静态。

感谢您的关注。

此致。

我不确定你是否真的了解多线程。静态方法对于多线程没有问题,绝对不是。它们的行为与独立函数完全一样,并且它们本身没有多线程问题。此外,我看不出需要对所有静态成员使用 class - 命名空间中的独立函数会更好。

对今天的系统虚方法和继承没有太大的影响,除非你期望调用虚函数很多(每秒超过数百万次)。

静态成员往往会给可维护性带来问题。

最好的做法通常是从最简单的实现开始,然后看看它的性能如何。

is it a good idea to do so in term of performance, portability, maintainability ?

不 - 看起来你让事情变得比必要的更复杂。

Only one instance of the object needs to be created within the host, so I have been declaring all class variables and methods as static.

不是将所有内容都声明为静态的,而是一种称为 Singleton 的模式可以实现您的需要。像往常一样声明你的 class,然后只创建一个实例。

I know that virtual methods have their cost, but what about the virtual inheritance itself ? Does virtual inheritance affect performances ?

调度虚拟方法的成本非常小,但在绝大多数情况下,它与计算量相比相形见绌。这是非常不成熟的优化 - 不要担心开销,除非你确定这是一个主要成本。先分析,再优化。 Virtual inheritance 是多重继承和 'diamond problem' 的一个非常特殊的解决方案,但问题中没有足够的信息来了解这是否与您的问题相关。