C++ 传递常量&作为函数参数

C++ 传递常量&作为函数参数,c++,pass-by-reference,C++,Pass By Reference,将const&作为参数传递给函数会有什么问题吗 最近,我们已经重写了一个对象的所有实例,在适用的情况下,通过值传递到通过引用传递&或通过常量传递 没有编译器错误 应用程序是windows服务,无法启动。我们没有调试版本,所以我在这里想问一下。因此,您的应用程序行为可能会发生变化的一种方式是:如果您盲目地传递某个东西&以前是通过值传递的,修改它的状态,旧代码不希望发生状态更改,并假设传递给函数的对象仍处于传递前的状态 路过&是会引起麻烦的,而不是const&。除非grep const_cast的代

将const&作为参数传递给函数会有什么问题吗

最近,我们已经重写了一个对象的所有实例,在适用的情况下,通过值传递到通过引用传递&或通过常量传递

没有编译器错误


应用程序是windows服务,无法启动。我们没有调试版本,所以我在这里想问一下。

因此,您的应用程序行为可能会发生变化的一种方式是:如果您盲目地传递某个东西&以前是通过值传递的,修改它的状态,旧代码不希望发生状态更改,并假设传递给函数的对象仍处于传递前的状态


路过&是会引起麻烦的,而不是const&。除非grep const_cast的代码库。

视情况而定。我建议您创建一个调试版本,并调试问题。如果以前您按值传递了所有内容。您只是将它们更改为引用,然后它们都应该更改为const&否则您将更改代码的执行方式。如果任何方法正在修改参数,那么它需要制作一个本地副本,而不是修改原始副本,否则您将更改代码的含义。为什么要进行此更改?如果您有void funcint param,您可以将其更改为void funconst int¶m,但这会给您带来什么好处?您不需要强制转换。考虑一个包含指针成员的类。使对象常量不能保护所指向的对象。使类实例常量有效地使所有成员常量,因此形式为int*my\u ptr的类成员有效地变成int*const my\u ptr。但这与常量int*my_ptr不同。