我有一个C++类,在其中一个成员函数中有一段重复的代码。所以我把它提取到一个函数中,但是只有这个成员函数才会调用这个新函数。目前,它只是一个在cpp文件中定义的c函数,并没有在其他地方声明。
让它成为私有的C++成员函数有什么好处吗,函数本身的代码不会使用类的任何变量。
发布于 2015-11-26 02:01:50
好吧,如果这是对这个论点的补充,最新的CppCoreGuidelines会说你应该"C.5: Place helper functions in the same namespace as the class they support“。因此,它们不应该是实际类的一部分,而应该是它们所在的命名空间的一部分。
发布于 2015-11-26 02:06:20
如果您将其添加到类中,则它将成为类签名的一部分。因此,对函数签名进行更改将会更改类签名。考虑到它将是一个私有函数,您不太可能通过以这种方式公开它来获得太多好处。
如果它需要访问类的内部结构,那么将其作为类的一部分可能会简化其实现。
如果它不需要访问内部,您可以将其添加到cpp文件中的匿名名称空间。这样,函数符号就不会暴露在任何不需要的地方。
发布于 2015-11-26 02:06:38
(一种扩展的评论)
您已经在.cpp文件中声明了一个自由函数。正如其他答案所指出的,这是一个很好的设计决定。你所能拥有的最清晰的东西就是一个只在.cpp文件中可见的方法,它不能看到或改变状态。我可能很想按照CppCoreGuidelines将它放在与类相同的名称空间中。
实际上,您可以在头文件中声明一个private static成员函数。这是C#/Java意义上的static,而不是C语言意义上的(C++ has all of these meanings)。然而,我不认为它的好处是你得到的唯一东西是不必要的重新编译。
https://stackoverflow.com/questions/33923238
复制相似问题