《c++面向对象程序设计》谭浩强版复习总结

上传人:第*** 文档编号:31888338 上传时间:2018-02-09 格式:DOCX 页数:22 大小:116.35KB
返回 下载 相关 举报
《c++面向对象程序设计》谭浩强版复习总结_第1页
第1页 / 共22页
《c++面向对象程序设计》谭浩强版复习总结_第2页
第2页 / 共22页
《c++面向对象程序设计》谭浩强版复习总结_第3页
第3页 / 共22页
《c++面向对象程序设计》谭浩强版复习总结_第4页
第4页 / 共22页
《c++面向对象程序设计》谭浩强版复习总结_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《《c++面向对象程序设计》谭浩强版复习总结》由会员分享,可在线阅读,更多相关《《c++面向对象程序设计》谭浩强版复习总结(22页珍藏版)》请在金锄头文库上搜索。

1、1第 1 章 C+ 基础endl 换行并刷新输出流 setw(n) 设置字段位数为 nhex,oct,dec 十六进制,八进制,十进制表示setfill 定义填充字符 setprecision 定义浮点数的精度left,right 左对齐,右对齐showpoint 强制显示小数点以及全部尾部 0C+通过给常量命名的方式定义常量:const=用 const 定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法 ,不能用赋值运算符对这种常量进行赋值。函数声明的一般形式为函数类型 函数名(参数表)函数模板的定义template 函数定义例子:templateT max(

2、T a,T b)return(ab)? a:b;定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename 或 class,用逗号分隔:template 2例子:templateT1 max(T1 a,T2 b)return (ab) ? a : (T1)b;有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端引用定义 对变量起另外一个名字 (别名 alias),这个名字称为该变量的引用。& = ;其中原变量名必须是一个已定义过的变量。如:int max ;int refmax 并没有重新在内存中开辟单元,只是引用 max

3、的单元。max 与 refmax在内存中占用同一地址,即同一地址两个名字。 对引用类型的变量,说明以下几点:1、引用在定义的时候要初始化 2、对引用的操作就是对被引用的变量的操作。3、引用类型变量的初始化值不能是一个常数。4、一旦引用被声明,它就不能再指向其它的变量。5、对引用的初始化,可以用一个变量名,也可以用另一个引用。6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。当&m 的前面有类型符时(如 int &m) ,它必然是对引用的声明;如果前面无类型符(如 cout ()作用域运算符:a 表示全局作用域中的变量 a。注意:不能用:访问函数中的局部变量new 运算从堆中

4、分配一块与相适应的大小为的数组存储空间,若分配成功,将这块存储空间的起始地址存入 ,否则置 的值为 NULL(空指针值,即 0) 。new 的使用格式为: =new ;delete 运算符用来释放 指向的动态存储空间。使用格式如下:delete 或delete 4第 2 章 面向对象基本概念面向过程编程与面向对象编程的区别:面向过程编程先确定算法,再确定数据结构;面向对象编程先确定数据结构,再确定运算。类定义:class :;若在类体外实现,则需要使用作用域运算符“:” ,用它来标识某个成员函数是属于哪个类的,其定义格式如下::()类外访问对象中的成员可以有 3 种方法:通过对象名和成员运算符

5、访问对象中的成员。.通过指向对象的指针变量访问对象中的成员。- 通过对象的引用访问对象中的成员。5析构函数其定义格式如下::()在一般情况下,调用构造函数与声明对象的顺序相同,而调用析构函数的次序正好与创建对象的顺序相反。三种构造函数 Box(); /无参构造函数Box(int h,int w ,int len):height(h),width(w),length(len)/带参构造函数复制构造函数定义(); (const & )Box(const Box/复制构造函数复制构造函数只有一个参数,并且是对同类对象的引用。静态成员是类的所有对象共享的成员,而不是某个对象的成员,它在对象中不占存储空

6、间,是属于整个类的成员。静态成员定义格式如下:static;不能用参数初始化表对静态数据成员初始化,也不能在构造函数体内初始化,静态数据成员只能在类体外进行初始化。6静态数据成员初始化格式如下::=;在类的成员函数中可以直接访问该类的静态数据成员,而不必使用成员访问运算符或类名限定修饰符。在类外必须使用成员访问运算符或类名限定修饰符访问公共静态数据成员。.:静态成员函数就是使用 static 关键字声明的成员函数。 静态成员函数可以直接访问该类的静态成员,但不能直接访问类中的非静态成员。7第 3 章 详解对象对象指针就是用于存放对象数据起始地址的变量。声明对象指针的一般格式为:*;对象指针的初

7、始化一般格式为:*=通过指针访问对象成员一般格式如下:- boxp-volumn();(*).(*boxp).volumn();this 指针是一个特殊的隐含指针,它隐含于每一个成员函数(静态成员函数除外)中,也就是说,每个成员函数都有一个 this 指针参数。this 指针指向调用该函数的对象,即 this 指针的值是当前被调用的成员函数所在的对象的起始地址。复制构造函数中隐含使用 this 指针:TAdd(const TAdd& p) this-x=p.x; this-y=p.y;coutx (*this).xthis 指针是一个 const 指针,成员函数不能对其进行赋值。静态成员中不能

8、访问 this 指针,因为静态成员函数不从属于任何对象。指向非静态数据成员的指针一般形式为:数据类型名 *指针变量名 ;定义指向公有成员函数的指针变量的一般形式为:数据类型名 (类名: *指针变量名 )(参数列表); 使指针变量指向一个公有成员函数的一般形式为:指针变量名=&类名:成员函数名常量定义格式如下:const =;常对象是其数据成员值在对象的整个生存期间内不能被改变的对象。const ();const ();常成员函数通过常成员函数来引用本类中的常数据成员。()const;9声明一维对象数组的一般格式为:10第 4 章 运算符重载重载为类的成员函数格式如下:operator () 函

9、数体 A operator + (A +为前置运算符时,它的运算符重载函数的一般格式为:operator +( )+为后置运算符时,它的运算符重载函数的一般格式为:operator +(int)运算符重载函数不能定义为静态的成员函数,因为静态的成员函数中没有 this指针。友元声明以关键字 friend 开始,只能出现在被访问类的定义中。具体格式如下: friend ();friend class ; 友元函数可以访问该类中的所有成员(公有的、私有的和保护的)通常使用友元函数来取对象中的数据成员值,而不修改对象中的成员值,保证数据安全。11重载为类的友元函数语法形式friend operato

10、r () ; +为前置运算符时,它的运算符重载函数的一般格式为:A operator +(A &a)+为后置运算符时,它的运算符重载函数的一般格式为:A operator +(A &a, int)重载提取运算符的一般格式为:friend istream istream & operater (istream &is, ClassName &f)重载输出(插入)运算符的一般格式为:friend ostream ostream & operater (ostream &is, ClassName &f)重载类型转换运算符函数格式:operator返回基本类型名 ()12return 基本类型值类类

11、型转换函数只能是成员函数,不能是友元函数。转换函数的操作数是对象。13第 5 章 继承与派生派生是指由基类创建新类的过程。class A int i; /基类成员 ;class B:public A /A 派生了 B,B 继承了 A,/B 自动拥有 A 的成员 int j; /定义派生类的新成员 ;派生类的定义格式如下:class : ;派生类继承了基类的全部数据成员和除了构造、析构函数之外的全部成员函数,它们在派生类中的访问属性由继承方式控制。三种继承方式下派生类中基类成员的访问控制权限无论是哪种继承方式,基类的私有成员在派生类中都是不可被访问的。只能通过基类的成员函数访问基类的私有数据成员

12、。 解决的办法是通过成员初始化表来完成,在成员初始化表中可以显式调用基类14构造函数。():(),();构造函数调用顺序为:基类的构造函数对象成员构造函数派生类的构造函数。析构函数调用顺序刚好相反。15当基类中没有显式定义构造函数,或定义了无参构造函数时,派生类构造函数的初始化表可以省略对基类构造函数的调用,而采用隐含调用。当基类的构造函数使用一个或多个参数时,派生类必须定义构造函数,提供将参数传递给基类构造函数的途径。这时,派生类构造函数的函数体可能为空,仅起到参数传递作用。如果在基类中既定义了无参构造函数,又定义了带参构造函数,则在定义派生类构造函数时,既可以包含基类构造函数和参数,也可以

13、不包含基类构造函数。如果在一个派生类中要访问基类中的私有成员,可以将这个派生类声明为基类的友元。友元关系是不能继承的。B 类是 A 类的友元,C 类是 B 类的派生类,则 C 类和A 类之间没有任何友元关系,除非 C 类声明 A 类是友元。多继承派生类的定义class : , ;多继承派生类的构造函数():(), ();必须包含完成所有基类初始化所需的参数构造函数调用顺序是:先调用所有基类的构造函数,再调用对象成员类构造函数,最后调用派生类的构造函数。处于同一层次的各基类构造函数的调用顺序取决于定义派生类时所指定的基类顺序,与派生类构造函数中所定义的成员初始化列表顺序无关。16如果有多个成员类

14、对象,则构造函数的调用顺序是对象在类中被声明的顺序,而不是它们出现在成员初始化表中的顺序。 析构函数的调用顺序与构造函数的调用顺序相反。虚基类虚基类的定义格式为:class :virtual ;【说明】引进虚基类后,派生类对象中只存在一个虚基类成员的副本。虚基类的初始化与一般多继承的初始化在语法上相同,但构造函数的调用顺序有所不同,规则如下:先调用虚基类的构造函数,再调用非虚基类的构造函数。若同一层次中包含多个虚基类,其调用顺序为定义时的顺序。若虚基类由非虚基类派生而来,则仍按先调用基类构造函数,再调用派生类构造函数的顺序。如果在虚基类中定义了带参数的构造函数,则要在其所有派生类(包括直接派生

15、类或间接派生类)中,通过构造函数的初始化表对虚基类进行初始化。17第 6 章 多态性与虚函数类型兼容规则类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。类型兼容规则中所指的替代包括以下情况:派生类的对象可以赋值给基类的对象。派生类的对象可以初始化基类的引用。派生类的对象的地址可以赋值给基类的指针变量。在替代之后,派生类对象就可以作为基类的对象使用,但只能访问从基类继承的成员。只能用派生类对象对其基类对象赋值,而不能用基类对象对其派生类对象赋值。同一基类的不同派生类对象之间也不能赋值。虚函数虚函数就是在基类中被关键字 virtual 说明、并在一个或多个派生类中被重新定义的成员函数。声明虚函数的格式如下:virtual ();在派生类中重新定义虚函数时,其函数原型包括返回类型、函数名、参数个数、类型和顺序,都必须与基类中的原型相同。一个函数一旦被声明为虚函数,则无论声明它的类被继承了多少层,在每一层派生类中该函数都保持虚函数特性。因此,在派生类中重新定义该函数时,可以省略关键字 virtual。实现动态的多态性时,必须使用基类类型的指针变量或对象引用,并使其指向不同的派生类对象,并

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号