下载此文档

中医养生保健学.ppt


文档分类:医学/心理学 | 页数:约40页 举报非法文档有奖
1/40
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/40 下载此文档
文档列表 文档介绍
1
1
第9章
友元函数与运算符重载
2
2
友元函数
运算符重载概述
一元运算符重载
二元运算符重载
3
3
友元函数
为了强调类的数据封装性,常将一些关键成员设为私有访问特性---为什么引入友元?
友元可以是一个函数,该函数被称为友元函数;友元可以是一个类,该类被称为友元类。
友元函数是一种普通函数,不是类的成员函数,说明时在函数前面加以关键字friend,它可以象成员函数一样不受限制地访问该类的任何成员。
4
4
友元函数的定义格式:
(1)类中定义
friend 类型函数名( 形参)
{ …函数体… }
(2)类中说明,类外定义
类中原型说明:
friend 类型函数名(形参);
类外定义:
类型函数名(形参)
{ …函数体… }
5
【例9-1】求圆柱体的体积。
#include<>
const float PI= ;
class A
{
float r,h;
public:
A(float a,float b){r=a;h=b;}
friend float v1(A &); //友元函数v1的原型说明
float v2( ){ return PI*r*r*h;} //定义成员函数v2
float getr(){return r;}
float geth(){return h;}
};
友元函数的形参为类的对象的引用
6
float v1(A &a)
//友元函数v2在类体外的定义
{ return PI***;}
float v3(A b) //全局函数
{ return PI*()*()*();}
void main()
{ A a1(25,40);
A a2(25,40);
cout<<v1(a1)<<“\n”;
//调用友元函数v1
cout <<( )<<“\n”;
//调用成员函数v2
cout<<v3(a1);
//调用全局函数v3
}
程序解读:
v2作为类A的成员函数可以直接使用类中的所有成员,包括私有成员;
V1作为类A的友元函数可以通过对象名加“.”运算符使用类中的所有成员,包括类中私有成员;
V3作为普通的全局函数,只能通过对象名加“.”运算符来使用类中成员,且只能使用类中的公有成员。
7
注意:
(1)类的访问控制权限对友元函数不起作用,因此友元函数
的声明可以出现在类中的任何地方。
(2)友元函数不能直接使用类的成员,必须指明成员所属的
对象。所以友元函数的形参通常是类的对象、对象的引
用、指针。
(3)友元函数的调用不同于成员函数的调用,应该直接调用。
(4)使用友元函数可减少函数的调用次数,提高程序的运行效
率,但它破坏了类的封装性,应谨慎使用。
(5)友元关系不具有继承性,即:假设f是基类A的友元函数,
C是类A的派生类,那么f不能直接访问类C的私有成员。
8
练习1:
一个类的友元函数能够访问该类的( )。
A. 私有成员 B. 保护成员
C. 公有成员 D. 所有成员
D
9
练习2:
有一友元函数的说明语句为:
friend float fun(A , float * , float *);
则友元函数fun( )可能是类的友元函数。
A
10
运算符重载概述
对于大多数程序设计语言,运算符的定义由编译器给出,且这种用法是不允许用户改变的。在C++中,允许用户重新定义已有的运算符,并按规定要求去完成特定的操作。
使用成员函数或友元函数,通过操作对象成员,从而实现对象参加运算的目的。

中医养生保健学 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数40
  • 收藏数0 收藏
  • 顶次数0
  • 上传人rabbitco
  • 文件大小2.70 MB
  • 时间2018-06-19
最近更新