欢迎来到天天文库
浏览记录
ID:59017056
大小:245.50 KB
页数:45页
时间:2020-09-26
《第6讲数据的共享与保护ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章数据的共享与保护目录5.1标识符的作用域与可见性5.2对象的生存期5.3类的静态成员5.4类的友元5.5共享数据的保护5.6多文件结构和编译预处理命令小结2例:计算两点间的距离classPoint{public://外部接口Point(intx=0,inty=0):x(x),y(y){}intgetX(){returnx;}intgetY(){returny;}floatdist(Point&a,Point&b);private://私有数据成员intx,y;staticintcount;};intpoint::
2、count=0;5.4类的友元——5.4.1友元函数作为成员函数合适吗?3classPoint{public://外部接口Point(intx=0,inty=0):x(x),y(y){}intgetX(){returnx;}intgetY(){returny;}private://私有数据成员intx,y;staticintcount;};intpoint::count=0;floatdist(Point&a,Point&b){doublex=a.x-b.x;doubley=a.y-b.y;returnstatic_c
3、ast(sqrt(x*x+y*y));}5.4类的友元——5.4.1友元函数作为普通函数行吗?45.4类的友元——5.4.1友元函数普通函数另一个类的成员函数类的成员函数类的数据成员共享5例:classA{public:voiddisplay(){cout<4、::display(){a.display();}行吗?65.4类的友元——5.4.1友元函数普通函数另一个类的成员函数类的成员函数类的数据成员共享75.4类的友元友元是C++提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元。85.4.1友元函数友元函数是在类声明中由关键字friend修饰说明的非成员函数,在它的函数体中能够通过对象名访问pri5、vate和protected成员作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。访问对象中的成员必须通过对象名。5.4类的友元9例5-6使用友元函数计算两点间的距离#include#includeclassPoint{//Point类声明public://外部接口Point(intx=0,inty=0):x(x),y(y){}intgetX(){returnx;}intgetY(){returny;}friendfloatdist(Point&a,Point&b);priv6、ate://私有数据成员intx,y;};5.4类的友元——5.4.1友元函数在类中声明友元函数:friend函数原型声明10例5-6(续)floatdist(Point&a,Point&b){doublex=a.x-b.x;doubley=a.y-b.y;returnstatic_cast(sqrt(x*x+y*y));}intmain(){Pointp1(1,1),p2(4,5);cout<<"Thedistanceis:";cout<7、友元——5.4.1友元函数运行结果:Thedistanceis:5友元函数可以访问类中的私有/保护成员115.4.2友元类若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。声明语法:将友元类名在另一个类中使用friend修饰说明。5.4类的友元12友元类举例classA{friendclassB;public:voiddisplay(){cout<8、;5.4类的友元——5.4.2友元类voidB::set(inti){a.x=i;}voidB::display(){a.display();}在类中声明它的友元类:friendclass类名;B类可以访问A类的所有成员13友元关系是单向的:如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却
4、::display(){a.display();}行吗?65.4类的友元——5.4.1友元函数普通函数另一个类的成员函数类的成员函数类的数据成员共享75.4类的友元友元是C++提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元。85.4.1友元函数友元函数是在类声明中由关键字friend修饰说明的非成员函数,在它的函数体中能够通过对象名访问pri
5、vate和protected成员作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。访问对象中的成员必须通过对象名。5.4类的友元9例5-6使用友元函数计算两点间的距离#include#includeclassPoint{//Point类声明public://外部接口Point(intx=0,inty=0):x(x),y(y){}intgetX(){returnx;}intgetY(){returny;}friendfloatdist(Point&a,Point&b);priv
6、ate://私有数据成员intx,y;};5.4类的友元——5.4.1友元函数在类中声明友元函数:friend函数原型声明10例5-6(续)floatdist(Point&a,Point&b){doublex=a.x-b.x;doubley=a.y-b.y;returnstatic_cast(sqrt(x*x+y*y));}intmain(){Pointp1(1,1),p2(4,5);cout<<"Thedistanceis:";cout<7、友元——5.4.1友元函数运行结果:Thedistanceis:5友元函数可以访问类中的私有/保护成员115.4.2友元类若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。声明语法:将友元类名在另一个类中使用friend修饰说明。5.4类的友元12友元类举例classA{friendclassB;public:voiddisplay(){cout<8、;5.4类的友元——5.4.2友元类voidB::set(inti){a.x=i;}voidB::display(){a.display();}在类中声明它的友元类:friendclass类名;B类可以访问A类的所有成员13友元关系是单向的:如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却
7、友元——5.4.1友元函数运行结果:Thedistanceis:5友元函数可以访问类中的私有/保护成员115.4.2友元类若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。声明语法:将友元类名在另一个类中使用friend修饰说明。5.4类的友元12友元类举例classA{friendclassB;public:voiddisplay(){cout<8、;5.4类的友元——5.4.2友元类voidB::set(inti){a.x=i;}voidB::display(){a.display();}在类中声明它的友元类:friendclass类名;B类可以访问A类的所有成员13友元关系是单向的:如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却
8、;5.4类的友元——5.4.2友元类voidB::set(inti){a.x=i;}voidB::display(){a.display();}在类中声明它的友元类:friendclass类名;B类可以访问A类的所有成员13友元关系是单向的:如果声明B类是A类的友元,B类的成员函数就可以访问A类的私有和保护数据,但A类的成员函数却
此文档下载收益归作者所有