📜  C++中的继承和友谊

📅  最后修改于: 2022-05-13 01:54:39.098000             🧑  作者: Mango

C++中的继承和友谊

C++ 中的继承:这是一个 OOPS 概念。它允许创建从其他类派生的类,以便它们自动包含其基类的一些功能和它自己的一些功能。 (参考这篇文章)

C++ 中的友谊:通常,不能从声明它们的同一类外部访问类的私有成员和受保护成员。但是,朋友类可以访问第一个类的受保护成员和私有成员。作为“朋友”的类不仅可以访问公共成员,还可以访问私有成员和受保护成员。 (参考这篇文章)

C++中继承和友谊的区别:在C++中,友谊不是继承的。如果基类有友元函数,则该函数不会成为派生类的友元。

例如,下面的程序打印一个错误,因为show() 基类A的朋友试图访问派生类B的私有数据。

C++
// CPP Program to demonstrate the relation between
// Inheritance and Friendship
#include 
using namespace std;
  
// Parent Class
class A {
protected:
    int x;
  
public:
    A() { x = 0; }
    friend void show();
};
  
// Child Class
class B : public A {
private:
    int y;
  
public:
    B() { y = 0; }
};
  
void show()
{
    B b;
    cout << "The default value of A::x = " << b.x;
  
    // Can't access private member declared in class 'B'
    cout << "The default value of B::y = " << b.y;
}
  
int main()
{
    show();
    getchar();
    return 0;
}


输出

prog.cpp: In function ‘void show()’:
prog.cpp:19:9: error: ‘int B::y’ is private
    int y;
        ^
prog.cpp:31:49: error: within this context
    cout << "The default value of B::y = " << b.y;
                                                ^