gpt4 book ai didi

c++ - 我应该在哪里实现这个 "private"辅助函数?

转载 作者:可可西里 更新时间:2023-11-01 15:50:20 25 4
gpt4 key购买 nike

我的类定义分布在头文件和源文件中:

// T.hpp

class T {
public:
void foo();
};

// T.cpp

void T::foo() {

}

如果 T::foo 需要使用一些只对 T 可见的辅助函数,以下哪个解决方案是最好的吗?

1。私有(private)成员(member)

// T.hpp

class T {
public:
void foo();
private:
void helper();
};

// T.cpp

void T::foo() {
helper();
}

void T::helper() {
}

2。只能在类定义的 TU 中访问自由函数

// T.hpp

class T {
public:
void foo();
};

// T.cpp

namespace {
void helper() {}
}

void T::foo() {
helper();
}

除了前者我最终会在头文件中添加更多函数外,有什么不同吗?

最佳答案

比成员函数更喜欢自由的非友元函数,因为与成员函数相比,它们对类成员的访问更少,因此引入错误的机会更少。

如果函数完全在接口(interface)范围之外,那么也将它放在实现文件中的未命名命名空间中。这将进一步减少错误的可能性,因为其他翻译单元将无法调用该函数。

在未命名的命名空间中与非 friend 一起获得的另一个好处是更改 header 的可能性较小(因为其中的实体较少)。由于编译时依赖性,更改头文件通常会大大减慢构建时间。私有(private)与否,根据 header 中所有内容的编译,您可能会有许多翻译单元。

关于c++ - 我应该在哪里实现这个 "private"辅助函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746840/

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