gpt4 book ai didi

c++ - 友元和继承有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:21 25 4
gpt4 key购买 nike

假设有两个类A和B:

class A {};
class B {};

下面两个例子在哪些方面不同?

示例 1:

class C : public A, public B {}; 

示例 2:

class C
{
//private
friend class A;
friend class B;
}

最佳答案

A friend 可以触摸任何它的 friend 的 private 部分(双关语只是轻微故意的!;)),但不能触摸 ABC 的一部分 - 这只是意味着“AB 可以触及 C 的私有(private)位")。 private 之外的任何东西当然也可用于 AB,所以如果 Cprotectedpublic 成员,也将可用。

当您继承时,AB 成为C 的一部分。 AB 的任何 private 部分对 C 不可用。在“is-a”与“has-a”命名法中,C 现在是-a A 和 is-a B - 在换句话说,它是从 A 继承而来的,所以它“从接口(interface)的角度来看表现得像 A

关于c++ - 友元和继承有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085169/

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