咕噜的面向对象考试复习.doc_第1页
咕噜的面向对象考试复习.doc_第2页
咕噜的面向对象考试复习.doc_第3页
咕噜的面向对象考试复习.doc_第4页
咕噜的面向对象考试复习.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

咕噜的C+面向对象考试复习一、 面向对象的基本特征1. 封装:private、protected、public。Private:除了该类型的创建者和类的内部成员函数之外,任何人都不能访问。Protected:与private基本相似(除了该类型的创建者和类的内部成员函数之外,任何人都不能访问),但继承的结构可以访问protected成员。Public:在其后声明的所有成员可以被所有人访问。在类的外部访问private成员变量的方法:例:#include using namespace std;class Aprivate: int i;public: int get_i() return i; ;int main (void) A a; cout a.get_i() endl; return 0; 优点:能使程序更安全,使外部不能随意访问和修改private成员。2. 继承(1) 继承有三种方式:public(共有继承)、private(私有继承)、protected(保护继承)。public(共有继承):子类可以访问除了父类私有成员在内的所有成员。private(私有继承):子类不能访问父类的任何成员。protected(保护继承):继承的类可以访问protected的成员,但不能访问private的成员。例:#include using namespace std;class aprivate:int i;public:int j;class b : public a;int main (void)b x;x.j=0; /当b public继承a的时候,x可以访问a中的j,但不能访问a中的i。 /如果b private继承a,则x不能访问a中的i和j。cout x.j endl;return 0;(2) 类的继承中成员函数的重定义和重载有什么联系和区别?重载 (overload): 指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。重定义 (redefining): 子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) 。例:#include using namespace std; class basspublic: void f (int n) /这两个f函数是重载。 cout f(int) endl; void f (string c) cout f(string) endl; ; class derive : public basspublic: void f (int a,int b) /这个函数是重定义。 cout derive f(int int) endl; ; int main (void) bass b; b.f(1); b.f(a); derive d; d.f(1,1);return 0;3. 虚函数(1) 虚函数的实现原理:编译器对每个包含虚函数的类创建一个虚函数表。在虚函数表中,编译器放置特定类的虚函数地址。在每个带有虚函数的类中,编译器秘密地放置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的虚函数表。通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入取得这个V P T R,并在V TA B L E表中查找函数地址的代码,这样就能调用正确的函数使晚捆绑发生。(2) 编写程序,利用指针实现虚函数的访问。#include using namespace std;class Apublic:virtual void f ()cout A f endl;class B : public Apublic:virtual void f ()cout B f endl;class C : public Apublic:virtual void f ()cout C f endl;void play (A &x)x.f();int main (void)A a;B b;C c;play (a);play (b);play (c);return 0;二、 运算符过载(复数)#include using namespace std;class complexprivate:float r;float i;public:void out (void)cout r i endl;complex (float a,float b)r=a;i=b;/过载+运算符 complex operator + (complex c) complex tc (r,i); tc.r += c.r; tc.i += c.i;return tc;/过载+(+在后面)运算符complex operator + (int)complex tc(r,i);r+=1.0;i+=1.0;return tc;/过载+(+在前面)运算符complex operator + (void)r+=1.0;i+=1.0;complex tc(r,i);return tc;bool operator = (complex c)return (r=c.r) & (i=c.i);bool operator != (complex c)return (r!=c.r) | (i!=c.i);int main (void)complex f(2,4),f1(3,5),f2(0,0);f2=+f;if (f=f1)cout ok endl;f2.out();return 0;三、 static在运行的程序中对某个类生成的对象数进行计数。#include using namespace std;class bassprivate:static int i;public:bass ()i+;void get_i ()cout i endl;int bass:i=0;int main (void)bass a,b;b.get_i();return 0;四、 模板。(1) 冒泡排序算法模板#include using namespace std;template int maopao (T *a , int l)T c;int i;bool f=true;while (f)f=false;for (i=0;iai+1)f=true;c=ai;ai=ai+1;ai+1=c;return 0;int main (void)float s100;int i,n;cin n;for (i=0;i si;maopao(s,n);cout s0;for (i=1;in;i+)cout si;cout endl;return 0;(2) 选择排序算法模板。#include using namespace std;template int xuanze (T *a , int l)T c;int d,i,j;for (i=0;il-1;i+)d=i;for (j=i+1;jl;j+)if (aj n;for (i=0;i si;xuanze(s,n);cout s0;for (i=1;in;i+)cout si;cout endl;return 0;(3) 插入排序算法模板(原数列已经有序,插入后使之保持原来的有序性)。#include using namespace std;template int charu (T *a , int l , T data)int i,d=-1;bool f=true;while (f & d+1l)d+;if (addata)f=false;for (i=l;id+1;i-)ai=ai-1;ad+1=data;return 0;int main (void)float s100,m;int i,n;cin n;for (i=0;i si;cin m;charu(s,n,m);cout s0;for (i=1;i=n;i+)cout si;cout endl;return 0;五、 构造函数和析构函数。(单链表)#include using namespace std;typedef struct lnodeint data;lnode *next;linklist;class clinklistprivate:linklist *head;public:clinklist()head=NULL;clinklist()dellinklist();int insert (int num)linklist *p=new linklist;p-data=num;p-next=head;he

温馨提示

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

评论

0/150

提交评论