gpt4 book ai didi

c++ - 将非成员非友元函数优先于成员函数

转载 作者:行者123 更新时间:2023-11-28 03:46:24 26 4
gpt4 key购买 nike

这个问题的标题取自 Scott Meyers 在 Effective C++ 3rd Edition 中第 23 项的标题。他使用以下代码:

class WebBrowser {
public:
void clearCache();
void clearHistory();
void removeCookies();

//This is the function in question.
void clearEverything();
};

//Alternative non-member implementation of clearEverything() member function.
void clearBrowser(WebBrowser& wb) {
wb.clearCache();
wb.clearHistory();
wb.removeCookies();
};

虽然声明下面的替代非成员非友元函数比成员函数 clearEverything() 更适合封装。我想部分想法是,如果提供访问的成员函数较少,则访问 WebBrowser 的内部成员数据的方法也较少。

如果你接受这一点并制作这种外部非友元函数,你会把它们放在哪里?这些函数仍然与类紧密耦合,但它们将不再是类的一部分。将它们放在类(class)的同一个 CPP 文件、库中的另一个文件或其他文件中是好习惯吗?

我主要来自 C# 背景,我从来没有摆脱过对所有东西都成为类一部分的渴望,所以这让我有点困惑(虽然这听起来很愚蠢)。

最佳答案

通常,您会将它们放在关联的命名空间中。这与 C# 中的扩展方法具有(某种程度上)相同的功能。

问题是,在 C# 中,如果你想创建一些静态函数,它们必须在一个类中,这很荒谬,因为根本没有 OO 进行 - 例如,Math 类。在 C++ 中,您可以只使用正确的工具来完成这项工作——命名空间。

关于c++ - 将非成员非友元函数优先于成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com