请看下面的代码,既然professor类保护继承了teacher类,那么teacher类的成员在professor类中就成了保护成员,派生类的友元函数是可以访问类中的保护成员的,实参为teacher类的子对象,与形参赋值兼容。但是编译时却出错了,提示为无权访问,为什么呢?
#include
#include
using namespace std;
class teacher
{
public:
teacher(int n,string nam,string s):num(n),name(nam),sex(s){}
void display();
int num;
string name;
string sex;
};
void teacher::display()
{
cout>num1>>name1>>sex1;
cout<<endl;
t=teacher(num1,name1,sex1);
}
int main()
{
professor p1(101,"张三","男",5120);
p1.display();
modify(p1);
p1.display();
system("pause");
return 0;
}
是不是友元函数modify的形参部分是属于对外的接口部分,不属于类体内的范围,只有友元函数体的内部(一对{}括号内的范围)才算是访问权限内的区域,可以访问类中的私有及保护成员。
|