gpt4 book ai didi

c++ - 具有私有(private)继承的派生类中的友元函数

转载 作者:可可西里 更新时间:2023-11-01 18:09:53 26 4
gpt4 key购买 nike

如果一个Derived类是从一个Base类私有(private)继承的,并且Derived类有一个友元函数f(),那么f()可以访问Derived类和Base类的哪些成员。

class Base {
public:
int a;
protected:
int b;
private:
int c;
};


class Derived: private Base {
void friend f() {}

public:
int d;
protected:
int e;
private:
int f;
};

我理解如果一个类是从基类私有(private)继承的,那么在派生类中一切都是私有(private)的。

但为什么在上面的代码中,函数f()可以访问a、b、d、e、f却不能访问c呢?

最佳答案

'Friendship' 授予对声明 friend 的类的访问权限 - 它不是可传递的。打个不好的比方——我的 friend 不一定是我爸爸的 friend 。

C++ FAQ 有更多的细节:

关于c++ - 具有私有(private)继承的派生类中的友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142708/

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