使用类 友元简介
来源:互联网 发布:u盘数据恢复后文件沒 编辑:程序博客网 时间:2024/05/19 13:29
C++提供了另外一种形式的访问权限:友元。友元有三种,友元函数 友元类 友元成员函数
通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。
为什么需要友元
重载乘的时候,将一个Time对象和一个double值结合在一起的时候,限制了该操作符的使用方法,因为左侧的是调用对象
A=B*2.75;被转化为
A=B.operator*(2.75);
但是编译器不能编译
A=2.75*B;
非成员函数不是由对象调用的,它使用的左右的值(包括对象),都是显示参数。
这样,上面的两个表达式都与下面非成员函数相匹配
A=operator*(2.75,B);
函数原型是
Time operator*(double m,const Time & t);
使用非成员函数可以按所需的顺序获得操作数,但是引发了一个新问题,非成员函数不能直接访问类的私有数据,至少常规成员函数不能访问。但是,有一类特殊的非成员函数可以访问类的私有成员,它们被称为友元函数。
创建友元
将其原型放在类声明中,并在声明前加上关键字friend
friend Time operator*(double m,const Time & t);该原型声明意味着两点:虽然operator*()函数是在类声明中声明的,但它不是成员函数,因此不能使用成员操作符来调用。 虽然operator*()函数不是成员函数,但它与成员函数的访问权限相同。
编写函数定义。 因为他不是成员函数,所以不要使用Time::限定符。另外,不要在定义中使用关键字friend,定义如下:
Time operator*(double m,const Time &t){Time result;long totalminutes=t.hours*mult*60+t.minutes*mult;result.hours=totalminutes/60;result.minutes=totalminutes%60;return result;}只有类声明可以决定哪一个函数是友元,因此类声明仍然控制了哪些函数可以访问私有数据。简而言之,类方法和友元只是表达类接口的两种不同机制。
0 0
- 使用类 友元简介
- 友元函数简介
- 类中 为什么使用友元
- 类模板中使用友元函数
- 模板类中使用友元函数
- 友元的使用
- Python使用元类
- python 使用元类
- 使用元类
- 友元简介:友元函数,友元类和友元成员函数
- C++友元简介:友元函数,友元类和友元成员函数
- 友元简介:友元函数,友元类和友元成员函数
- 友元函数的使用
- 友元函数的使用
- 友元的简单使用
- 友元的使用用法:
- 元数据简介
- 元数据(metadata)简介
- JSP中页面框架的处理
- Error opening registry key 'Software\JavaSoft\Java Runtime Environment
- hdu2546 饭卡 01-背包问题
- String s;和String s=null;和String s="a";有什么区别?
- 程序员的奋斗史(三十九)——大学断代史(三)——我和知乎邂逅
- 使用类 友元简介
- Fragment & Task
- 使用Visual Studio 创建可视Web Part部件
- 遍历json对象并获取json对象的长度(不是json数组)
- java.lang.ClassCastException
- [C/C++]使用上下左右控制菜单项
- 葡萄奶酥
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法
- 插入排序