标签:面向 price 报错 package ilo 外部 oid 方法 成员函数
今天学到一个特别有意思的东西,甚至是C++独有的东西,叫做友元函数。类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend。C++之所以特有友元函数,其实是别的面向对象语言换了个方法叫他,而不是说C++有这样一个新鲜的特性。可以对应到Java的private-package,C#的Internal等。
下面看例子:
如果我有这样一个类
class Pen{
public:
Pen();
private:
int price = 1500;
};
我在主函数中
int main(){
Pen pilot;
cout << pilot.price << endl;
}
// 编译器会果断报错,因为没有权限访问Pen类的私有成员
那么如果有了今天的主角友元函数
class Pen{
public:
Pen();
private:
int price = 1500;
friend void printPrice(Pen pilot); // 在类内部需要声明
};
// 注意,友元函数不是类的成员函数
void printPrice(Pen pilot){
cout << pilot.price << endl;
}
// 主函数
int main(){
Pen pilot;
printPrice(pilot);
// 输出结果为 1500
return 0;
}
标签:面向 price 报错 package ilo 外部 oid 方法 成员函数
原文地址:https://www.cnblogs.com/scyq/p/12296963.html