关键字声明

来源:互联网 发布:量化交易程序员招聘 编辑:程序博客网 时间:2024/04/30 19:34

原则上,一个类不能私有的和受保护的成员可以从同一类在它们之外声明。然而这条规则不适用于“朋友”

朋友是函数或类的朋友关键字声明

非成员函数可以访问类的私有的和受保护的成员如果它声明类的一个朋友。这是通过包括在类中声明外部功能前面加上关键字的朋友

12345678910111213141516171819202122232425262728// friend functions#include <iostream>using namespace std;class Rectangle {    int width, height;  public:    Rectangle() {}    Rectangle (int x, int y) : width(x), height(y) {}    int area() {return width * height;}    friend Rectangle duplicate (const Rectangle&);};Rectangle duplicate (const Rectangle& param){  Rectangle res;  res.width = param.width*2;  res.height = param.height*2;  return res;}int main () {  Rectangle foo;  Rectangle bar (2,3);  foo = duplicate (bar);  cout << foo.area() << '\n';  return 0;}

复制功能的类矩形的一个朋友。因此,功能重复才能访问该成员的宽度和高度(这是私人的)的不同类型的矩形对象。注意到没有在宣言中的复制也不在主以后的使用,复制被认为是类成员函数的矩形的一员。它不是!简单地访问自己的私有的和受保护的成员没有一个成员

友元函数的典型用例两个不同的类访问私有或受保护成员双方之间进行操作


0 0
原创粉丝点击