C++ 良好做法:仅修改功能参数?

C++ 良好做法:仅修改功能参数?,c++,C++,比如说,我开发了一个复杂的应用程序:在对象成员函数中,我应该只修改那些作为参数传递给成员函数的对象,还是可以访问和修改我可以访问的任何其他对象(比如公共对象或静态对象) 从技术上讲,我知道我可以修改任何我可以访问的内容。我问的是关于良好实践的问题 有时,我将访问和修改的所有内容都作为参数传递是很麻烦的,尤其是如果我知道对象成员函数将不会被任何其他人使用,而是被我使用。谢谢。如果您有一个包含成员变量的类,那么在成员方法中修改这些成员变量是完全可以接受的,无论这些成员变量是私有的、受保护的还是公共的

比如说,我开发了一个复杂的应用程序:在对象成员函数中,我应该只修改那些作为参数传递给成员函数的对象,还是可以访问和修改我可以访问的任何其他对象(比如公共对象或静态对象)

从技术上讲,我知道我可以修改任何我可以访问的内容。我问的是关于良好实践的问题


有时,我将访问和修改的所有内容都作为参数传递是很麻烦的,尤其是如果我知道对象成员函数将不会被任何其他人使用,而是被我使用。谢谢。

如果您有一个包含成员变量的类,那么在成员方法中修改这些成员变量是完全可以接受的,无论这些成员变量是私有的、受保护的还是公共的。这就是所谓的封装


事实上,修改传入成员方法的变量可能是个坏主意;返回一个新值是您想要的,或者从一个单独的成员方法返回一个新值。

全局状态从来都不是一个好主意(尽管它有时更简单,例如日志记录),因为它引入了接口中没有记录的依赖项,并增加了组件之间的耦合。因此,应该不惜一切代价避免修改全局状态(例如,静态变量)。注意:全局常数完全可以

<>在C++中,你有<代码> const 关键字,以文档(和编译器强制执行)什么可以修改,什么不能。
const
方法可以保证对象的可见状态不会被触及,通过
const
引用传递的参数或值也不会被触及


只要记录在案,就可以。。。您应该努力在类接口中尽量少使用非
const
方法,在方法中尽量少使用非
const
参数。

+1谢谢您的回答。我会等一会儿,直到我关闭这个帖子。@Bunkai:不要觉得有义务在30分钟或一小时内关闭它,让它打开几天也可以,不是所有人都醒着,如果你等一等,你可能会得到更好的答案/评论:)@Matthieu M:这对我很有用。我通常试着尽快合上线,通常是在一两个小时内。谢谢:-)我将此答案标记为已接受的答案,因为我认为这是这里给出的两个答案中更详细的一个。谢谢