C++复习纲要 2.doc_第1页
C++复习纲要 2.doc_第2页
C++复习纲要 2.doc_第3页
C++复习纲要 2.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

C+复习纲要一、程序结构1、源程序 .cpp2、类的声明部分 .h 类的实现部分 .cpp二、类(相当重要)1、构成:数据成员,成员函数2、构造函数(自动调用),析构函数(对象终止时调用)3、成员访问:指针,创建类的对象(实例)4、三种访问方式(在计算机领域,权限是永恒的话题)public,private就不用说了protected 是受保护变量,类内和子类可直接访问。5、内联函数(inline int add() i+;)6、重点复习:学生成绩管理,商品信息管理,图书管理,工资管理三、运算符重载(相当重要)1、形式 operator+();2、注意:不能创造新的运算符;不能改变运算符的优先级、结合律、操作数;赋值、取地址符不能重载。3、重点复习:复数类(不解释,不纠结)四、继承与派生1、继承方式(又是3P)public 基类的private成员派生类也不可用,基类的public和protected成员在派生类中可直接使用.继承过来(变成派生类相应的public和protected成员)只有public成员在派生类外可以直接使用.Protected 基类的private成员仍为私有.基类的public和protected成员变成派生类的protected成员,这时在派生类外也不能直接使用原基类的public成员private 基类的private成员仍为有私有.基类的public和protected成员将变成派生类的private成员2、派生类中构造函数的调用顺序 构造函数的义务: (1)每个类必须负责自己的对象成员初始化; (2)构造函数不能够被继承,派生类的构造函数还必须调用基类的构造函 数来初始化基类成员; 调用顺序:通过例子说明:如果派生类和基类都有构造函数,在定义一派生类时,系统首先调用基类的构造函数,然后再调用派生类的构造函数。在继承关系下有多个基类时,基类构造函数的调用顺序取决于定义派生类时基类的定义顺序。析构函数相反。例如:#include #include using namespace std;class Apublic:A(int a)coutconstructor of Aendl;class Basepublic:Base(int b)coutconstructor of Baseendl;class Derive:public Basepublic:A a;Derive():Base(10),a(10)coutconstructor of deriveendl;int main ()Derive P;return 0;输出为:constructor of Baseconstructor of Aconstructor of derive五、多态1、对于同一条信息,不同的派生类会有不同的反应。 2、多态是用过纯虚函数实现的。3、在C+中,含有纯虚拟函数的类称为抽象类,它不能生成对象。六、动态内存管理1、int *p=new int 10; 动态数组的大小可以是变量或常量;而一般数组必须是常量。2、关键字 new,delete七、static1、面向过程的static1)、静态局部变量保存在全局数据区,而不是保存在栈中,所以当函数的内存回收时,该变量不消失,每次的值保持到下一次调用,直到下次赋新值; 2)、未经初始化的静态全局变量会被程序自动初始化为0;3)、静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;4)、在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。2、static数据成员 1)、对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷 贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新;1)、静态数据成员存储在全局数据区。静态数据成员定义时要分配空间,所以不能在类声明中定义。2)、静态数据成员和普通的一样遵从public,protected,private访问规则; 3)、因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它; 4)、静态数据成员初始化的格式为: := 5)、类的静态数据成员有两种访问形式: . 或 :3、static成员函数1)、与静态数据成员一样,我们也可以创建一个静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务 。 2)、非静态成员函数可以任意地访问静态成员函数和静态数据成员; 3)、静态成员函数不能访问非静态成员函数和非静态数据成员; 八、常量1、常对象,只能调用常成员。2、指针:( const ) int * ( const ) p pconstp const内存单元 九、函数模板1、现在有三对数据(int a,b 和 float m,n 和 double q,w),要求编写函数分别求出每对数据的最大值。普通的函数需要编写三个才能解决这个问题,但运用函数模板,一个函数即可完成,类型无关并且只在需要时自动实例化。2、定义:template class T T max(const T& t1, const T& t2) return (t1 t2) ? t1 : t2; 其中class T 定义 T 作为模板参数,或者是占位符,当实例化 max()时,它将替代具体的数据类型。max 是函数名,t1和t2是其参数,返回值的类型为 T。也就是说系统在需要的时候可以自动将T换为int、float或者是double。十、引用1、引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全等价。int a; int &ra=a; 定义引用ra,它是变量a的引用,即别名2、注意:(1)&在此不是求地址运算,而是起标识作用; (2)类型标识符是指目标变量的类型;(3)声明引用时,必须同时对其进行初始化;(4)不能建立数组的引用;(5)不能建立引用的引用,不能建立指向引用的指针。因为引用不是一种数据类型,所以没有引用的引用,没有引用的指针。 十一、this指针1、this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。2、一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。十二、友元函数1、友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数,类授予它的友元访问权。2、注意:1)、友元关系不具对称性。即 A 是 B 的友元,但 B 不一定是 A 的友元。 友元关系不具传递性。即 B 是 A 的友元,C 是 B 的友元,但是 C 不一定是 A 的友元。2)、类与类之间的友元关系不能继承。Void f (int intA, int c ,int s)if(cs)f(intA, c+1 ,s);coutintAc”,”;十三、其它1、sizeof()函数(略)。2、指针占用 4B(1B=8b); int 占用 4B; char占用 1B。3、*p+等价于*(p+)4、递归(自己调用自己,如右)复数类实现:#includeusing namespace std;class Complexpublic: Complex()real=0;imag=0; Complex(double r,double i)real=r;imag=i; void display();Complex operator+(Complex& c2);Complex operator-(Complex& c2); Complex operator*(Complex& c2); Complex operator/(Complex& c2);private: double real;double imag;void Complex:display() cout(real,imagi)endl;Complex Complex:operator+(Complex& c2) return Complex(real+c2.real,imag+c2.imag);Complex Complex:operator-(Complex& c2) return Complex(real-c2.real,imag-c2.imag);Complex Complex:operator*(Complex& c2)return Complex (real*c2.real-imag*c2.imag,real*c2.imag+imag*c2.real);Complex Complex:operator/(Complex& c2)return Complex (real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag), (-real*c2.imag+imag*c2.real)/(c2.real*c2.real+c2.imag*c2.imag);int main() Complex c1(3,4),c2(5,10),

温馨提示

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

评论

0/150

提交评论