📜  传承与友谊

📅  最后修改于: 2021-05-30 19:54:34             🧑  作者: Mango

在C++中,友谊不是继承的。如果基类具有某个friend函数,则该函数不会成为派生类的朋友。

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

#include 
using namespace std;
  
class A
{
  protected:
    int x;
  public:
    A() { x = 0;}
  friend void show();
};
  
class B: public A
{
  public:
    B() : y (0) {}
  private:
    int y;
  
};
  
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;
}

感谢Venki提供上述代码和说明。

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”