對教程中的例子,稍加修改,添加了友元類的使用。
#include
using namespace std;
class Box
{
double width;
public:
friend void printWidth(Box box);
friend class BigBox;
void setWidth(double wid);
};
class BigBox
{
public :
void Print(int width, Box &box)
{
// BigBox是Box的友元類,它可以直接訪問Box類的任何成員
box.setWidth(width);
cout << "Width of box : " << box.width << endl;
}
};
// 成員函數定義
void Box::setWidth(double wid)
{
width = wid;
}
// 請注意:printWidth() 不是任何類的成員函數
void printWidth(Box box)
{
/* 因為 printWidth() 是 Box 的友元,它可以直接訪問該類的任何成員 */
cout << "Width of box : " << box.width << endl;
}
// 程序的主函數
int main()
{
Box box;
BigBox big;
// 使用成員函數設置寬度
box.setWidth(10.0);
// 使用友元函數輸出寬度
printWidth(box);
// 使用友元類中的方法設置寬度
big.Print(20, box);
getchar();
return 0;
}
Mr.Right
Mr.Right
826***410@qq.com2年前 (2019-03-08)