gpt4 book ai didi

c++ - 结交类友并继承它有什么用?

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:12 25 4
gpt4 key购买 nike

我正在浏览我本地的一个图书馆并注意到以下内容:

class Derived : public Base
{
friend class Base; // serves as a factory
protected:
pthread_spinlock_t allocLock;
bool isSafe{ true };

Derived();
char *funcA() override;

public:
void funcB( bool _in ) override;
virtual ~Derived();
};

我无法理解 Base 是否被继承,以及为什么它成为 Derivedfriend。另外,评论作为工厂在这里有何意义?

如果要访问 Base 函数,:: 运算符就足够了。

它是否与设计方法更相关?

最佳答案

使基类成为友元可以让基类访问派生类的私有(private)成员。如果不看 class Base 的定义,很难说这是什么原因。注释似乎表明基类具有创建派生类对象的成员函数。

通常,这是糟糕的设计。当基类完全知道它的派生类时,这是一件坏事,而当它可以访问派生类的私有(private)成员时,情况就更糟了。依赖关系应该只有一种方式:派生类依赖于基类,而不是相反。换句话说,派生类中的更改不应破坏基类。

如果您需要一个工厂,正确的做法是将创建逻辑放入一个单独的工厂类中,而不是放入基类中。

关于c++ - 结交类友并继承它有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612414/

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