下载此文档

c 第8章友元.ppt


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
c 第8章友元.ppt第7章友元OOP主张程序的封装、数据的隐藏,但任何事情都不是绝对的,例如,一个家,总是要通过防盗门、门锁等不让外人进入,但是,在特殊情况下,如全家出游,又需要检查煤气、水电,就可以把钥匙托付给可以信赖的邻居 ——朋友(友元)——可以访问你家的私有数据成员信息隐藏:数据成员私有;通过公有的成员函数访问问题引入:条件:类外函数需要频繁地访问类的数据成员目的:提高程序效率方法:友元(friend)<类型><友元函数名>(<参数表>);注:友元函数说明可在类的任何部位,意义完全一样。友元函数的定义一般在类外(一般与类的成员函数定义放在一起)注意友元函数可直接访问该类的所有成员(公有的、私有的、保护的),但它不是成员函数,它可以像普通函数一样在任何地方调用。[]#include<>classSample{private: intn;public: Sample(){n=0;} Sample(inti){n=i;} voidgetn(){returnn;} voiddisplay(){cout<<"n="<<n<<endl;}friendSamplesquare(Sample);//友元函数说明};Samplesquare(Samplex){inttmp=*;returnSample(tmp);}voidmain(){Samplea(5),b;b=square(a);();}//如果该函数没有定义为友元:Samplesquare(Samplex){inttmp=()*();returnSample(tmp);}结果如下:n=25[]求一个点到直线的距离。点类Point,点坐标——用两个数据成员x和y表示(因为要在类外使用,所以设计为公有的)。直线类Line,直线方程为ax2+bx+cx=0,系数用三个私有数据成员a、b和c表示设计一个函数dist(参数为Point和Line)计算一个点(x,y)到直线ax2+bx+cx=0的距离d公式如下。#include<>#include<>classPoint{public: doublex,y; Point(doublex1,doubley1){x=x1;y=y1;}};classLine{private: doublea,b,c;public: Line(doublea1,doubleb1,doublec1){a=a1;b=b1;c=c1;}frienddoubledist(Linel,Pointp);};doubledist(Linel,Pointp){doubled;d=abs(*+*+)/(sqrt(*+*));returnd;}voidmain(){Pointp(10,10);Linel(2,4,-3);cout<<"d="<<dist(l,p)<<endl;}结果:d=:类A定义中用关键词friend说明类B friendclass<类名>例如:类B是类A的友元类classA{…friendclassB;};则类B的所有成员函数都是类A的友元函数。[]#include<>classB;classA{private: intn;public: A(){n=5;}friendclassB;};classB{public:voiddisplay(Atmp) {cout<<“n=”<<<<endl;}//B的成员函数访问了A的私有数据};voidmain(){Aa;Bb;(a);}n=5[]实现一个栈——后进先出要求:实现栈的压入(入栈)和弹出(出栈)。设计(用链表实现栈):结点类node,它包含结点值data和指向上一个结点的指针prev;栈类stack,它包含栈的头指针top。

c 第8章友元 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人dyx110
  • 文件大小395 KB
  • 时间2019-11-13