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

C++成员函数与自由函数
EN

Stack Overflow用户
提问于 2009-06-08 23:31:39
回答 3查看 13.6K关注 0票数 31

在我编写程序的时候,我一直对这个设计决策感到困惑,但我不是100%确定什么时候应该让一个函数成为一个类的成员函数,什么时候让它作为一个普通函数,当函数声明在头文件中公开时,其他源文件可以在其中调用该函数。大多数情况下,对类的成员变量的期望访问与决策有关吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-08 23:36:36

Herb Sutter的接口原理

对于类X,所有函数,包括自由函数,都

(a)“提及”X,及

(b)“与”X一起供应

在逻辑上是X的一部分,因为它们构成了X的接口的一部分。

要深入讨论,请阅读Herb Sutter的Namespaces and the Interface Principle

编辑

实际上,如果你想理解C++,请阅读everything what Herb Sutter所写的内容:)

票数 33
EN

Stack Overflow用户

发布于 2009-06-09 00:58:15

当我需要维护状态时,我使用类。如果一个函数不需要访问维护的状态信息,那么我更喜欢自由函数,因为它使测试和代码重用变得更容易。

如果我有一堆相关的功能,但不需要维护状态,那么我更喜欢将自由函数放在一个名称空间中。

票数 2
EN

Stack Overflow用户

发布于 2009-06-09 00:03:08

如果需要访问成员变量或对象实例的某些方面,则应将其设置为方法。

如果它与类密切相关,但不需要访问任何特定于实例的信息,那么应该将其设置为共享函数(或类函数,或静态函数,具体取决于您使用的编程语言)。

即使它只是一个泛型函数,您也有可能拥有多个函数,并且可以根据某个概念对它们进行聚合/组织。然后,您可以创建一个表示该概念的类,并使其成为共享函数。

鉴于上述情况,我再也看不到创建独立函数的任何理由了。

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

https://stackoverflow.com/questions/967538

复制
相关文章

相似问题

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