首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >私有C++成员函数与C函数

私有C++成员函数与C函数
EN

Stack Overflow用户
提问于 2015-11-26 01:49:07
回答 4查看 415关注 0票数 2

我有一个C++类,在其中一个成员函数中有一段重复的代码。所以我把它提取到一个函数中,但是只有这个成员函数才会调用这个新函数。目前,它只是一个在cpp文件中定义的c函数,并没有在其他地方声明。

让它成为私有的C++成员函数有什么好处吗,函数本身的代码不会使用类的任何变量。

EN

回答 4

Stack Overflow用户

发布于 2015-11-26 02:01:50

好吧,如果这是对这个论点的补充,最新的CppCoreGuidelines会说你应该"C.5: Place helper functions in the same namespace as the class they support“。因此,它们不应该是实际类的一部分,而应该是它们所在的命名空间的一部分。

票数 4
EN

Stack Overflow用户

发布于 2015-11-26 02:06:20

如果您将其添加到类中,则它将成为类签名的一部分。因此,对函数签名进行更改将会更改类签名。考虑到它将是一个私有函数,您不太可能通过以这种方式公开它来获得太多好处。

如果它需要访问类的内部结构,那么将其作为类的一部分可能会简化其实现。

如果它不需要访问内部,您可以将其添加到cpp文件中的匿名名称空间。这样,函数符号就不会暴露在任何不需要的地方。

票数 1
EN

Stack Overflow用户

发布于 2015-11-26 02:06:38

(一种扩展的评论)

您已经在.cpp文件中声明了一个自由函数。正如其他答案所指出的,这是一个很好的设计决定。你所能拥有的最清晰的东西就是一个只在.cpp文件中可见的方法,它不能看到或改变状态。我可能很想按照CppCoreGuidelines将它放在与类相同的名称空间中。

实际上,您可以在头文件中声明一个private static成员函数。这是C#/Java意义上的static,而不是C语言意义上的(C++ has all of these meanings)。然而,我不认为它的好处是你得到的唯一东西是不必要的重新编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33923238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档