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);