码迷,mamicode.com
首页 > 其他好文 > 详细

友元函数

时间:2017-10-08 16:55:48      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:标识   定义类   访问   div   pre   void   运算符   prot   protect   

#include<iostream>
using namespace std;
class Box
{
    double width;
    public:
    friend void printWidth(Box box);
    void setWidth(double wid);
};
//类的友元函数,定义在类外部,用::作用域限定符
//有权访问类的所有私有和保护成员,在类中定义,用friend表示
//不是成员函数
void Box::setWidth(double wid)
{
    width=wid;
}
//printWidth()不是任何类的成员函数
void printWidth(Box box)
{
    cout<<"Width of box"<<box.width<<endl;
}
int main()
{
    Box box;
    box.setWidth(10.0);
    printWidth(box);
    return 0;
}

一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。

而友元则是一个外设,借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。

以前的一个笑话,说你的私处父母子女不能摸,孩子也不能摸,只有你的"朋友"可以触碰,就是这个吧。

在友元类中,友元的关系是单向的而不是双向的。且不能传递。

友元函数不同于类的成员函数,在友元函数中不能直接访问类的成员,必须要借助对象。

成员函数可以定义在类定义内部,或者在类的外部单独使用范围解析运算符 :: 来定义。在类定义中定义的成员函数把函数声明为内联的,即便没有使用 inline 标识符。

定义类的成员函数时候,在 :: 运算符之前必须使用类名。调用成员函数是在对象上使用点运算符(.

友元函数

标签:标识   定义类   访问   div   pre   void   运算符   prot   protect   

原文地址:http://www.cnblogs.com/enyala/p/7637639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!