构造函数的作用是在创建对象时.doc_第1页
构造函数的作用是在创建对象时.doc_第2页
构造函数的作用是在创建对象时.doc_第3页
构造函数的作用是在创建对象时.doc_第4页
构造函数的作用是在创建对象时.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

第八章一,构造函数的作用是在创建对象时,系统自动调用它来给所创建的对象初始化。构造函数的特点:l 构造函数是一种成员函数,他的说明在类体内,它的函数体可写在类体内,也可以写在类体外。l 构造函数是一种特殊的成员函数,该函数的名字与类名相同。定义和说明构造函数时,不必指明函数的类型。l 构造函数可以有一个参数或多个参数,也可以没有参数。l 构造函数可以重载。l 构造函数用于创建对象时的系统自动调用,也可以在程序中调用构造函数创建无名对象。构造函数的种类:1. 默认构造函数。2. 拷贝构造函数。二, 析构函数的功能是用来释放一个对象的。当对象结束它的生存期时,系统将自动调用析构函数来释放该对象。析构函数与构造函数的作用正好相反。析构函数的特点:n 析构函数也是一种成员函数,它的函数体可以写在类体外,也可以在类体内。n 析构函数的名字同类名,与构造函数的区别是前面加。n 析构函数没有参数,不能重载,也不必指明函数类型。n 析构函数通常是被系统自动调用的。三, 成员函数的三个特征u 内联和外联。u 成员函数重载。u 设置默认参数。四, 静态成员n 特点: 属于类的,可以用类名加:引用。说明方法: staticn 静态数据成员: 初始化方法,对象的特点。n 静态成员函数: 对数据成员的访问方式不同。五, 友元函数n 说明方法: friendn 特点: 说明在类体内的外部数据成员,定义在类体外的非成员函数。n 作用: 访问类中的私有成员,提供程序运行效率。n 缺点: 破坏了类的封装性和隐蔽性。第九章一, 对象指针和对象引用 对象指针:指向对象的指针。 都可以用于函数参数和返回值。二, 对象数组1. 定义格式:2. 对象数组元素:3. 区别:指向对象数组的指针 和 对象指针数组。三, 子对象和堆对象子对象概念:一个对象作为另一个类的成员时,该对象称为类的子对象。子对象实际是某类的数据成员。堆对象:在程序运行中,根据需要随时创建的对象称为堆对象。C+中,内存被分为4种储存区域:n 代码区:用来存放程序代码的n 数据区:用来存放全局变量、静态类变量和常量等n 栈区: 用来存放局部变量、函数参数、返回值、返回地址和临时变量等n 堆区; 用来存放其余数据,包括对对象等使用运算符new创建堆对象。使用运算符delete释放对象。该运算符是专门用来释放由运算符new所创建的变量或对象。使用delete的注意事项:n 该运算符必须用于由new返回的指针。n 对于一个指针只能使用一次运算符delete。n 指针名前只能使用一对方括号,而不管所释放数组的为数,并且方括号内不写任何东西。n 该运算符也适应于空指针。四, 类型转换和转换函数l 类型转换包括隐含类型转换和强制类型转换。转换函数是一种强制类型转换。l 单参数的构造函数,提供了一种功能,可以将其他数据类型的数值或变量转换为用户所定义的数据类型。这便是单参数构造函数所具有的类型转换功能。转换函数的使用应该注意:a) 转换函数是成员函数,但它必须是非静态的。b) 在定义转换函数时不能带类型说明,因为该函数名字就是类型转换的目标类型。c) 转换函数是用来进行类型转换的,定义是不必带有任何参数。d) 转换函数不能定义为友元函数。第十章一, 基类和派生类的概念 单继承和多继承 三中继承方式 派生类构造函数的调用顺序:u 基类构造函数。u 子对象构造函数。u 派生类构造函数。 派生类析构函数的调用顺序:u 先调用派生类的析构函数。u 在调用派生类中子对象的析构函数。u 最后调用基类的析构函数。 在基类中定义有默认构造函数或者没有定义任何构造函数时,派生类构造函数中省略对基类构造函数的调用。二, 子类型定义:作用:子类型的重要作用就在于类型适应。第十一章一, 运算符重载的概念声明:operator大多少运算符都可以重载,只有4个不能: . .* : ?: 运算符重载的四个不变原则:l 优先性不变。l 结合性不变。l 操作个数不变。l 语法结构不变。 运算符重载的两种形式:l 成员函数形式l 友元函数形式二, 静态联编和动态联编的概念静态联编:指在程序编译阶段进行联编的,这种联编又称为早期联编,这是因为这种联编工作是在程序运行之前完成的。动态联编:指在程序运行时进行的联编,又称晚期联编。继承是动态联编的基础,虚函数是动态联编的关键。三, 动态联编的条件l 公有继承l 虚函数引用虚函数的方法:对象引用和对象指针、成员函数。虚函数的特性:u 派生类中的虚函数与基类中的虚函数具有相同的参数个数、对应的参数类型,相同的返回值类型。u 基类中说明的虚函数具有自动向下传给他的派生类的性质。即派生类的虚函数中的virtual说明可以省略。u 只有非静态数据成员函数才可以说明为虚函数。u 构造函数不能说明为虚寒酸,因为对象在创建时它还没有确定的内存空间,只有在构造后才是一个类的实例。析构函数可以是虚寒酸,并且最好是在动态联编的时候说明成虚寒酸。四, 抽象类l 定义:抽象类是一种特殊的类,这种类不能定义对象。它的主要作用是用来组织一个继承的层次结构,并由它提供一个公共的根,而相关的子类由它派生出来。l 特点:一个抽象类至少具有一个纯虚函数。l 用途:抽象类用来描述一组子类的共同的操作接口,它只能用作基类,而完整的实现由子类完成。第十三章格式化输出设置对齐方式,设置数据宽度。ios:left ios:right resetiosflags(long), setiosflags(long) ,setfill(int), setw()Cout.width(int), cout.fill(int), cout.setf(), cout.precision(),例子:void main() for(int i = 7; i1;i-) coutsetfill( )setw(i) setfill(*)setw(15-2*i)#endl; for(int i = 1; i8;i+) coutsetfill( )setw(i) setfill(*)setw(15-2*i)#endl; 结果: # *# *# *# *# *# *# *# *# *# *# *# #include class B public: virtual void fn() coutIn B.n; ;class D:public B public: virtual void fn() coutIn D.n; ;void test(B &x) x.fn();void main() B b; test(b); D d; test(d);结果:In B.In D.#include class A public: A() a= 0; A(int i) a = i; void print() couta,; private: int a;class B:public A public: B() b1=b2= 0; B(int i) b1= 0; b2 = i; B(int i,int j, int k):A(i),b1(j),b2(k) void print() A:print(); coutb1,b2endl; private: int b1; int b2; ;void main() B b1; B b2(5); B b3(1,2,3); b1.print(); b2.print(); b3.print();结果:0,0,00,0,51,2,3#include#includeclass Point public: Point(double i, duouble j) x=i; y=j; void Getxy() cout(x,y)endl; friend double Distance(Point a,Point b); private: double x,y; double Distance(Point a,Point b) double dx=a.x-b.x; double dy=a.y-b.y; return sqrt(dx*dx+dy*dy);void main() double d11=3.0,d12=4.0,d21=6.0,d22=8.0; Point p1(d11,d12), p2(d21,d22); p1.Getxy(); p2.Getxy(); double d=Distance(p1,p2); coutDistance isdendl;结果:(3,4)(6,8)Distance is 5#includeclass M public:

温馨提示

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

评论

0/150

提交评论