作为我正在进行的项目的一部分,我必须设计一个离散 vector 微积分计算器。此外,主程序必须能够处理相当大的数据集。我的想法是创建一个名为 Calculator
的类,它只有成员函数。所以我想到了两种方法来使用 Calculator
中的函数,如下所示:
第一种方法是实例化类并像这样使用它的成员:
/* inside main program */
Vector V;
Calculator calc;
Vector Vgrad = calc.gradient( V );
另一种方式(我认为)是“范围内”,希望这不会实例化类:
/* inside main program */
Vector V;
Vector Vgrad = Calculator::gradient( V );
我想知道第二个版本是否跳过了必须实例化类的步骤。此代码并行运行,我不希望每个线程都创建自己的 Calculator
以节省空间。所以我想知道第二种写法是否 (a) 有效,以及 (b) 更节省内存。欢迎任何其他设计想法,但请记住,我想将这些实体放在一个类中以提高可读性。
最佳答案
是的,第二种方法不实例化任何类。这并不是说开销很大,而是这样确实节省了一些地方。
作为替代方案,只需考虑声明一个Calculator
命名空间;如果你想要的只是一个不同的范围。一个没有非静态成员和方法,只有静态方法或成员的类,几乎只是一个它自己的命名空间。
关于c++ - "scoping into"C++ 中类的头文件是否创建了它的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847626/