数据结构与程序设计 编程中的问题_第1页
数据结构与程序设计 编程中的问题_第2页
数据结构与程序设计 编程中的问题_第3页
数据结构与程序设计 编程中的问题_第4页
数据结构与程序设计 编程中的问题_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、11/23/2021数据结构与程序设计1Example:编程中的问题void printMyclass(Myclass m)coutm.a1“ ”m.a2; /希望在函数中访问私有成员a1和a2,怎么办? /为全局的函数void main()Myclass m2; coutendlHere is printMyclass(m2):endl;printMyclass(m2);coutendl;11/23/2021数据结构与程序设计2C+ 基础知识例程AboutClass3n友元函数:n 是在某类中说明的一个函数,它不是该类的成员,但允许访问该类的所有对象的私有成员和保护成员。11/23/2021

2、数据结构与程序设计3C+ 基础知识例程AboutClass3class Myclassprotected:int a1;private:int a2;public:Myclass();/friend void printMyclass(); /友元函数的声明friend void printMyclass(Myclass m); ;11/23/2021数据结构与程序设计4C+ 基础知识例程AboutClass3Myclass:Myclass()a1=1;a2=2;/void Myclass:printMyclass()/couta1 a2;/error, printMyclass为为Mycla

3、ss的友元,不是成员函数的友元,不是成员函数void printMyclass()/couta1 a2;11/23/2021数据结构与程序设计5C+ 基础知识例程AboutClass3void printMyclass(Myclass m)coutm.a1 m.a2; /为全局的函数void main()Myclass m1,m2;/coutendlHere is m1.printMyclass(m2):endl;/m1.printMyclass(m2);coutendlHere is printMyclass(m2):endl;printMyclass(m2);coutendl;11/23/

4、2021数据结构与程序设计6C+ 基础知识-例程AboutClass3n目录AboutClass3下例程11/23/2021数据结构与程序设计7ResultnHere is printMyclass(m2):n1 211/23/2021数据结构与程序设计8C+ 基础知识例程AboutClass3n友元虽然出现在类的说明中,但它不是类的成员函数,所以没有this指针。n友元说明可以出现在类的私有或公有部分,没有区别。n友元可直接访问对象的私有成员,省去调用类成员函数的开销,但破坏了类的封装和数据隐藏,因此不能滥用友元。n可以将一个类说明为另一个类的友元。n友元关系不具有传递性和交换性。11/23

5、/2021数据结构与程序设计9C+ 基础知识友元类nclass Stack;nclass Noden friend Stack;n private int entry; /私有成员n private Node *next;/私有成员n;11/23/2021数据结构与程序设计10C+ 基础知识友元类n友元为扩充类的接口提供了一种灵活的方法。11/23/2021数据结构与程序设计11C+ 基础知识引用nC+中使用引用建立变量或对象的别名。n引用分为:引用参数、返回引用以及独立引用。11/23/2021数据结构与程序设计12C+ 基础知识引用目录目录AboutClass4下例程下例程#include

6、void swap(int &x, int &y)int tmp;tmp=x;x=y;y=tmp;void main()int a=1,b=2;coutendlold a: a old b: b;swap(a,b);coutendlnew a: a new b: b;coutendl;引用参数11/23/2021数据结构与程序设计13C+ 基础知识引用n目录AboutClass4下例程n#includenchar s=Hello world;nchar &replace(int i) nreturn si;nnvoid main()nreplace(5)=X;ncout

7、sendl;n返回引用11/23/2021数据结构与程序设计14C+ 基础知识引用n目录AboutClass4下例程n#includenvoid main()nint a=1,b=2;nint &ref=a; nref=10;ncoutnew a: aendl;n独立引用11/23/2021数据结构与程序设计15C+ 基础知识引用n说明引用时,独立引用必须初始化。n一旦初始化,引用就不能重新赋值。11/23/2021数据结构与程序设计16C+ 基础知识引用n不能引用数组 nchar s=Hello world;n/void setArray(char & s2)n/s20=h;

8、n/nvoid setArray(char s2)ns20=h;nnvoid main()nsetArray(s);ncoutsendl;n11/23/2021数据结构与程序设计17C+ 基础知识引用n不能建立引用指针, 但可以建立指针的引用。nvoid main()n int a=1;n int &ref=a;n int &ref2=ref;n /int & *p=&a;n int *p=&ref2;n int * &p2=p; /p2为指针p的别名。n cout&p &p2;n11/23/2021数据结构与程序设计18Home

9、 workn设有一个表头指针为设有一个表头指针为h的单链表。试设计一个算法,通过遍历一的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点的链接方向逆转。要求逆转结果链表趟链表,将链表中所有结点的链接方向逆转。要求逆转结果链表的表头指针的表头指针h指向原链表的最后一个结点。指向原链表的最后一个结点。 ntemplate nstruct Node n/ data membersn Node_entry entry;n Node *next;n/ constructorsn Node();n Node(const Node_entry item, Node *add_on = 0);n;ntemplate nvoid Inverse (Node * &first ) 11/23/2021数据结构与程序设计19Home workn用双向链表来实现一个有序表,使得能在这个表中进行正向和反向搜索。指针p总是指向最后成功搜索到的结点,搜索可以从p指示的结点出发沿任一方向进行。试根据这种情况编写一个函数search(head, p, key),检索具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论