为什么私有继承的层次结构,每个类都需改写为朋友以实现长尾词功能?

2026-04-16 18:303阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计324个文字,预计阅读时间需要2分钟。

为什么私有继承的层次结构,每个类都需改写为朋友以实现长尾词功能?

请考虑以下伪原创代码开头内容:

python假设我们需要实现一个简单的文本分析工具,用于统计一段文本中每个单词出现的频率。为了简化问题,我们假设输入文本已经是一个字符串,且只包含小写字母和空格。接下来,我们将编写一个函数,该函数将返回一个字典,字典的键是单词,值是该单词在文本中出现的次数。

请考虑以下代码:

为什么私有继承的层次结构,每个类都需改写为朋友以实现长尾词功能?

#include <iostream> class A{ friend class C; int a{42}; }; class B: private A{ friend class C; }; class C: private B { public: void print() {std::cout << a << '\n';} }; int main() { C c; c.print(); }

根据this answer,成员变量A :: a在所有类中都“存在”,但其可见性不同,即在B或C中不可见,除非我们将B或C作为A的朋友.我的问题是我为什么需要让C成为A和B的朋友?我会尽管A中的朋友声明就足够了.如果我删除朋友类C;来自A或B的声明,代码无法编译.

My question is why do I need to make C a friend of both A and B?

如果没有B声明C有朋友,C就不会看到B继承A.即使C看到A :: a,也不会看到B :: a.

确实:

> C继承B,因此可以从C访问B中的所有公共内容.>但B从A私下继承.C是B的朋友,让C看到这个继承.> A :: a的访问是私有的,所以即使C将A视为其祖先,它也需要成为A的朋友才能看到A :: a.

本文共计324个文字,预计阅读时间需要2分钟。

为什么私有继承的层次结构,每个类都需改写为朋友以实现长尾词功能?

请考虑以下伪原创代码开头内容:

python假设我们需要实现一个简单的文本分析工具,用于统计一段文本中每个单词出现的频率。为了简化问题,我们假设输入文本已经是一个字符串,且只包含小写字母和空格。接下来,我们将编写一个函数,该函数将返回一个字典,字典的键是单词,值是该单词在文本中出现的次数。

请考虑以下代码:

为什么私有继承的层次结构,每个类都需改写为朋友以实现长尾词功能?

#include <iostream> class A{ friend class C; int a{42}; }; class B: private A{ friend class C; }; class C: private B { public: void print() {std::cout << a << '\n';} }; int main() { C c; c.print(); }

根据this answer,成员变量A :: a在所有类中都“存在”,但其可见性不同,即在B或C中不可见,除非我们将B或C作为A的朋友.我的问题是我为什么需要让C成为A和B的朋友?我会尽管A中的朋友声明就足够了.如果我删除朋友类C;来自A或B的声明,代码无法编译.

My question is why do I need to make C a friend of both A and B?

如果没有B声明C有朋友,C就不会看到B继承A.即使C看到A :: a,也不会看到B :: a.

确实:

> C继承B,因此可以从C访问B中的所有公共内容.>但B从A私下继承.C是B的朋友,让C看到这个继承.> A :: a的访问是私有的,所以即使C将A视为其祖先,它也需要成为A的朋友才能看到A :: a.