友谊和继承有什么区别?

dee*_*ace 3 c++ inheritance friend

假设有两个A和B类:

class A {};
class B {};
Run Code Online (Sandbox Code Playgroud)

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

例1:

class C : public A, public B {}; 
Run Code Online (Sandbox Code Playgroud)

例2:

class C
{
    //private
    friend class A;
    friend class B;
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 24

一个friend可以触摸的private部分)无论它是朋友,但没有的(双关语只是轻微故意的!)AB是一部分C-它只是意味着" AB可触摸C的私人位").什么"低于" private,当然也可以向AB,所以如果Cprotectedpublic成员,这也将是可用的.

当你继承,AB成为其中的一部分C.任何private部分AB不可用C.在"is-a"与"has-a"命名法中,C现在是-a A和is-a B- 换句话说,它是继承自的A,所以它" A从界面的角度来看就像.