最近在准备考研,专业课中涉及到一些c++知识,就此总结。
结论:在类的继承当中,友元函数的访问权限与本类保持一致。
程序如下:
#include <iostream>
using namespace std;
/*
结论:
在类的继承当中,友元函数的访问权限与本类保持一致。
*/
void son_friend() ;
void father_friend();
class father {
public:
father() {};
friend void father_friend();
static int father_public;
protected:
static int father_protected;
private:
static int father_private;
};
class son: public father {
public:
son() {};
friend void son_friend();
void vest() {
cout << father_public << endl;
cout << father_protected << endl;
// cout << father_private << endl;//无权访问
}
static int son_public ;
protected:
static int son_protected;
private:
static int son_private ;
};
void son_friend() {
//尝试子函数权限
cout << son::son_public << endl;
cout << son::son_protected << endl;
cout << son::son_private << endl;
//尝试基函数权限
cout << father::father_public << endl;
cout << father::father_protected << endl;
// cout << father::father_private << endl;//无权访问(权限与子类保持一致)
}
void father_friend() {
//尝试子函数权限
cout << son::son_public << endl;
// cout << son::son_protected << endl;//无权访问(权限与基类保持一致)
// cout << son::son_private << endl;//无权访问(权限与基类保持一致)
//尝试基函数权限
cout << father::father_public << endl;
cout << father::father_protected << endl;
cout << father::father_private << endl;
}
int father::father_public = 1;
int father::father_protected = 2;
int father::father_private = 3;
int son::son_public = 4;
int son::son_protected = 5;
int son::son_private = 6;
int main() {
son_friend();
father_friend();
return 0;
}