是否有使用友元类隐藏私有函数的习语名称?

如果一个类有很多私有函数,在头文件中声明它们似乎是不可取的。它使客户端更难解析类的接口并增加编译时间。

当然,一种选择是 pimpl 惯用法,但这会增加一层间接性并导致内存分配。

下面是在实现文件中定义的友元类中隐藏辅助函数的示例。

这个成语有名字吗?

有什么理由不这样做吗?

//Foo.h
class Foo
{
public:
    void FuncA();
    void FuncB();
    
private:
    int x;
    // more data...

    friend struct FooHelpers;
};
//Foo.cpp
struct FooHelpers
{
    static void Helper1(Foo& f)
    {
        // manipulate private data..
        f.x++; //etc.
    }
    // Possibly more funcs...
};

void Foo::FuncA()
{
    //....
    FooHelpers::Helper1(*this);
    //....
}
//....

以上是是否有使用友元类隐藏私有函数的习语名称?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>