Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过对象还是创建新对象?_C++_Function_Class_Object - Fatal编程技术网

C++ 通过对象还是创建新对象?

C++ 通过对象还是创建新对象?,c++,function,class,object,C++,Function,Class,Object,我有一个简单的问题。我有一个没有任何变量的类,它只是一个有很多空函数(显示东西等)的类。当我创建该类的对象时,在程序运行时通过我的所有函数传递该对象会更好/更有效,还是在程序每次进入新函数时重新创建该对象更有效?请记住,对象没有需要保留的变量。提前感谢您的帮助。该类只包含静态函数,而不需要任何实例,这一点更有意义。无论如何,您没有状态…更有意义的是,该类只有静态函数,根本不需要实例。无论如何,您没有状态…对于性能问题,几乎没有区别。将对象作为参数传递将在运行时花费您一点(非常小的)开销。不会重新

我有一个简单的问题。我有一个没有任何变量的类,它只是一个有很多空函数(显示东西等)的类。当我创建该类的对象时,在程序运行时通过我的所有函数传递该对象会更好/更有效,还是在程序每次进入新函数时重新创建该对象更有效?请记住,对象没有需要保留的变量。提前感谢您的帮助。

该类只包含静态函数,而不需要任何实例,这一点更有意义。无论如何,您没有状态…

更有意义的是,该类只有静态函数,根本不需要实例。无论如何,您没有状态…

对于性能问题,几乎没有区别。将对象作为参数传递将在运行时花费您一点(非常小的)开销。不会重新创建对象(假定编译器优化)

但是,如果您曾经计划引入一些状态(字段),或者对于那些
void
方法有两个实现,那么您应该传递一个对象,因为它大大降低了重构成本


总结:如果你的类类似于
Math
where方法本质上是无状态的,那么坚持使用@Amit-answer并将其设置为静态。否则,如果您的类类似于
Canvas
Windows
,并且您打算以后以另一种方式实现它,那么最好通过引用传递它,这样您就可以用抽象接口替换它,并提供实际的实现

对于性能问题,几乎没有区别。将对象作为参数传递将在运行时花费您一点(非常小的)开销。不会重新创建对象(假定编译器优化)

但是,如果您曾经计划引入一些状态(字段),或者对于那些
void
方法有两个实现,那么您应该传递一个对象,因为它大大降低了重构成本


总结:如果你的类类似于
Math
where方法本质上是无状态的,那么坚持使用@Amit-answer并将其设置为静态。否则,如果您的类类似于
Canvas
Windows
,并且您打算以后以另一种方式实现它,那么最好通过引用传递它,这样您就可以用抽象接口替换它,并提供实际的实现

如果其他空类中的函数从未更改。。。考虑使它们静止。或者将它们放在名称空间而不是类中

另一方面。。。如果函数在运行时设置一次,比如说,您选择基于操作系统使用哪些显示函数,然后将它们存储在全局文件中。或者单身


在紧握的手上。。。如果较大代码的不同部分的函数不同。。。然后是的,您必须以某种方式将它交付给任何需要它的函数。您是应该创建一次并多次通过,还是应该从不通过并根据需要创建,这实际上取决于应用程序的具体情况。抱歉,这里没有通用答案。

如果其他空类中的函数从未更改。。。考虑使它们静止。或者将它们放在名称空间而不是类中

另一方面。。。如果函数在运行时设置一次,比如说,您选择基于操作系统使用哪些显示函数,然后将它们存储在全局文件中。或者单身


在紧握的手上。。。如果较大代码的不同部分的函数不同。。。然后是的,您必须以某种方式将它交付给任何需要它的函数。您是应该创建一次并多次通过,还是应该从不通过并根据需要创建,这实际上取决于应用程序的具体情况。抱歉,这里没有通用答案。

将类设置为静态。如果您所做的一切都是对它调用函数,那么您将执行类似Math.cos()的操作;请参见使类成为静态。如果您所做的一切都是对它调用函数,那么您将执行类似Math.cos()的操作;另请参见Heck,由于该类中没有变量,因此它基本上是静态函数的集合。您要做的唯一一件事就是对其他函数隐藏这些函数,这取决于类的声明方式。同意。好吧,作为一个静态类,我该如何调用该类的函数?非常感谢各位,我没有想到这一点。MyStaticClass::myFunction(var1,var2);嘿,这个类中没有变量,它基本上是一个静态函数的集合。您要做的唯一一件事就是对其他函数隐藏这些函数,这取决于类的声明方式。同意。好吧,作为一个静态类,我该如何调用该类的函数?非常感谢各位,我没有想到这一点。MyStaticClass::myFunction(var1,var2);