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;
^