程序设计基础(二)知识点

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第8章类和对象8.1面向对象程序设计方法可简单地定义为:以类为核心、以对象为基本操作单元、以消息传递为基本操作、具有继承机制的程序设计方法。8.2面向对象中的对象是对具体客观事物的抽象,包括属性抽象和行为抽象两个方面。8.3属性是对象的静态特征,被抽象为成员变量,又称数据、数据结构等。8.4行为是对象的动态特征,被抽象为成员函数,又称操作、运算、功能、方法、算法等。8.5属性和行为是对象的两个要素,对象是由其属性和行为组成的有机体。把对象的数据(属性)和操作代码(行为)封装成相对独立的基本单位称作封装或封装性。即,对象=数据结构+算法。8.6类是具有相同属性和行为的一组对象的模板,是一组对象的共性之抽象。8.7定义类的一般语句格式和功能为:格式class类名{访问权限:成员变量和成员函数……}对象表;功能指定类名,指定类中成员及其访问权限。8.8类的成员访问权限分为三种:private:私有的——不对外(不可见)。public:公有的——对外(可见)。protected:保护的——仅对子类(可见)。8.9成员的默认访问权限是private,新规定的访问权限取代之前的访问权限。8.10定义类的关键字class可改用struct,后者规定,成员的默认访问权限是public。8.11定义对象的一般语句格式和功能为:格式类名对象名(实参表或对象)功能创建指定对象,并初始化。注意:省略全部实参时,要连同()一起省略。8.12由类创建对象称作类的实例化,对象又称类的实例。同类对象具有相同数据结构和操作。8.13类的成员可在类体外定义,但必须在类体中作相应声明,定义时必须在函数名前声明所在的类“类名::”,此“::”称作作用域限定符。8.14类的成员函数只占一份存储空间,同类对象其享成员函数,对象只存储其成员变量。8.15访问对象中成员的一般格式为:格式对象名.公有成员变量名格式对象名.公有成员函数名(实参表)格式对象指针-公有成员变量名格式对象指针-公有成员函数名(实参表)8.16在定义类时,其成员没有访问权限,均可访问。8.17在定义类时,当前对象的指针为this,未被形参屏蔽的成员可省略前缀。8.18对象与外界交流信息又称传递消息,形式上表现为调用成员函数。8.19对象中的公用成员又称对外接口,只要接口不变,对类的内部修改不影响类外程序。8.20在定义类时,通常,把所有数据和不提供给外界使用的操作指定为私有的,使它们在外界只能被公有的操作访问。这种做法称作信息隐蔽或隐蔽性。第9章关于类和对象的进一步讨论9.1构造函数是一个特殊成员函数。从形式上说,构造函数与类同名。从机制上说,构造函数在创建对象时被自动调用,通常用于初始化对象。9.2每个类都有其构造函数。无形参且函数体为空的构造函数可省略,此时称作隐式构造函数。9.3类中的成员变量不占内存,在定义类时,不允许给成员变量赋初值。9.4对象的初始化有以下几种格式:格式一类名对象名={数据表}功能把数据表中数据依次赋给对象的成员变量。注意:此格式要求,成员变量均是公有的。格式二类名对象名=对象或类名对象名(对象)功能把右侧对象的成员变量依次赋给左侧对象的成员变量。注意:此格式要求,右侧对象必须已存在,且与左侧对象属于同一类。格式三类名对象名(初值表)2功能以初值表为实参调用构造函数。9.5构造函数返回一个该类对象,其成员变量取构造函数结束时的值。但是,构造函数不允许定义返回值的类型,不允许用带有返回值的return语句。9.6调用构造函数不允许加前缀(“对象.”或“对象指针-”)。构造函数应当定义为public,除非该类不创建对象。9.7定义构造函数可采用下述格式:构造函数名(形参及类型、默认值表):成员变量(初值),…,成员变量(初值){}其中,成员变量不允许重复。9.8函数允许同名,称作函数的重载,它们的形参个数或类型必须有所区别,具体调用哪个函数由实参个数和类型确定。构造函数也可重载。9.9允许指定函数形参的默认值,调用时,未指定实参的对应形参取默认值。构造函数也如此。9.10构造函数的默认参数值必须在类体中指定。9.11声明带默认参数值的函数,可省略形参名。9.12调用带默认参数值的函数时,如果省略某个实参,则其后实参必须全省。因此,如果定义函数时,指定某个形数的默认值,则必须指定其后所有形数的默认值。9.13析构函数是一个特殊成员函数。从形式上说,析构函数与类同名,另加前缀~。从机制上说,析构函数在释放对象时被自动调用,通常用于释放相应内存。9.14析构函数不允许定义返回值的类型,不允许用带有返回值的return语句。9.15析构函数应当定义为public,除非该类不创建对象。9.16析构函数的函数体为空时可省略,此时,称其为隐式或空析构函数。9.17析构函数没有形参,因此,不能重载析构函数,每个类只有一个析构函数。9.18通常,先创建的对象后释放,后创建的对象先释放,相当于把对象放在一个栈中。9.19全局和静态局部对象只创建一次,直到程序结束时才被释放。9.20关于对象数组有以下两条特殊规定:⑴必须指定数组中全部元素的默认值或初值。⑵用数据表给数组赋初值时,数据被依次赋给对象中的第一个成员变量。9.21关于对象指针有以下两条特殊规定:⑴动态申请单个对象要求指定默认值或初值。⑵申请多元动态数组要求指定默认值。9.22成员函数指针的定义格式为:函数值类型(类名::*指针变量)(形参类型表);9.23成员函数名不是函数指针,要加上取地址运算&:&类名::成员函数名9.24成员函数指针的调用格式为:(类名::*指针变量)(实参表)9.25this是类中的一个特殊指针,它是由系统定义的,指向当前对象自身。9.26在类定义中,调用当前对象的成员可加前缀“this-”(通常可省略)。9.27常对象的定义格式和功能如下:格式类名const对象(实参表),…,对象(实参表);//类名和const可交换功能使该对象只能调用const成员函数,而且,除了被声明为mutable的成员变量外,不允许修改对象中的其它成员变量。9.28常成员变量的初值必须在构造函数中用下述格式指定:常成员变量(初值表达式)9.29创建对象后,不允许修改常成员变量的值,它是具体对象中的常量,而非整个类的常量。9.30在声明和定义成员函数时,函数括号后均加上const者称作常成员函数。常成员函数只能修改被声明为mutable的成员变量,只能调用常成员函数。9.31定义指针变量时,*和变量之间插入const者称作常指针变量,简称常指针。常指针必须在定义时给定其所指向的目标,之后不允许修改(不允许再指向别处)。如果常指针所指向的目标不是常变量,则允许修改所指向的变量。9.32在基类型名前或后加上const所定义的指针变量称作指向常变量的指针。指向常变量的指针所指向的目标未必是常变量,但是,不允许用该指针去修改所指向的数据,因此,对于该指针来说,它指向的是“常变量”。常指针不允许修改自身的值,常变量的指针不允许修改所指向的数据。9.33指向常变量的指针必须是常指针。9.34若实参是常变量,则对应的函数形参必须是常变量。9.35动态建立对象(new)格式new类名[对象个数]3格式new类名格式new类名(初值表)功能①申请所需连续内存;②自动调用构造函数初始化对象;③返回基址。后两种格式均是申请1个对象的存储空间。9.36释放动态对象(delete)格式delete[]对象的指针格式delete对象的指针功能①自动调用析构函数;②释放对象。9.37若对象内申请了动态内存,则在析构函数中要有相应释放功能。9.38对象的赋值格式为:目标对象=源对象。9.39对象的复制格式为:目标对象(源对象)9.40对象的复制仅限于定义目标对象时,即,用源对象初始化目标对象。9.41对象的赋值和复制是成员变量间的对应赋值,因此,成员变量的数据类型均要支持自身类型的赋值。9.42定义成员变量时,在类型名前或后加上static所定义的成员变量称作静态成员变量。9.43静态成员变量被该类对象所共享,只占一份内存,隶属于类,而非具体对象,即使未定义对象它也占内存。9.44静态成员变量在程序运行之初分配内存,直到程序结束时才被释放。9.45静态成员变量必须在类体外指定初值,格式为:类型名类名::静态成员变量=初值;当初值为0时,可连同赋值号一起省略。9.46对于公有的静态成员变量的类外调用,除了用对象或对象指针调用外,也可附加类名调用,格式为:类名::静态成员变量9.47定义成员函数时,在函数前加上static所定义的成员函数称作静态成员函数。9.48静态成员函数没有默认的对象,不接收this指针,不能直接访问非静态成员。9.49对于公有的静态成员函数的类外调用,除了用对象或对象指针调用外,也可附加类名调用,格式为:类名::静态成员函数(实参表)9.50友元分为友元函数和友元类,友元函数可以是普通函数和成员函数。声明友元的格式为:声明友元函数friend函数声明;声明友元类friendclass类;9.51声明友元的语句必须在类体中,不区分权限。9.52友元函数和友元类中的成员函数可访问指定它为友元的类中私有成员。9.53友元不具有对称性和传递性。9.54类模板的定义格式为:templateclass形参,…class类模板名{类体};9.55类模板的调用格式和功能为:格式类模板名实参,…功能用实参对应替换类模板中的形参,得到具体的类。9.56在类模板体外定义成员函数的格式为:templateclass形参,…函数类型类模板名形参,…::函数定义第10章运算符重载10.1重载双目运算符的一般定义格式为:返回值类型operator运算符(形参){函数体}其中,当前对象是运算的左目,形参是运算的右目,函数体是运算的具体操作。10.2对于重载后的双目运算,使用格式为:左目运算符右目或对象.operator运算符(形参)对象指针-operator运算符(形参)10.3重载单目运算符的一般定义格式为:返回值类型operator运算符(){函数体}其中,当前对象是运算的右目,函数体是运算的具体操作。10.4对于重载后的单目运算,使用格式为:运算符右目或对象.operator运算符()4对象指针-operator运算符()10.5运算符重载要遵守以下规则:⑴只能重载已有的运算符。⑵不能重载的运算符有5个:“.”(成员运算)、“.*”(成员指针运算)、“::”(域运算)、“sizeof”(存储字节运算)、“?:”(条件运算符)。另外,“-*”是一个双目运算符,可重载。⑶重载运算符不能改变其目数,因此,不能指定重载运算符形参的默认值,操作数的类型必须有所改变——至少有一个是类类型。另外,重载不改变运算符的优先级和结合性,有些运算符只能重载为成员函数或友元函数。10.6重载右++和右--的定义格式为:返回值类型operator++(int){函数体}返回值类型operator--(int){函数体}其中,int是伪形参。10.7cin是istream类对象,输入操作符又称流提取符,它从输入流istream提取数据。10.8cout是ostream类对象,输出操作符又称流插入符,它向输出流ostream插入数据。10.9和均是双目运算,作为输入输出操作只能重载为友元(左元分别是对象cin和cout):friendistream&operator(istream&,用户类&);friendostream&operator(ostream&,用户类);10.10用单参数构造函数可实现其它类型数据到本类对象的转换,此构造函数的定义和调用格式为:定义构造函数(被转类型形参){转换规则}调用构造函数(被转数据)10.11把类的对象转换为基本类型需重载数据类型转换运算符(),只能重载为成员函数,定义格式为:operator基本类型名(){转换规则}5第11章继承与派生11.1继承又称派生,被继承者称作父类或基类,继承者称作

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功