《C++面向对象程序设计》谭浩强版复习总结.docx
- 文档编号:10436183
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:14
- 大小:103.46KB
《C++面向对象程序设计》谭浩强版复习总结.docx
《《C++面向对象程序设计》谭浩强版复习总结.docx》由会员分享,可在线阅读,更多相关《《C++面向对象程序设计》谭浩强版复习总结.docx(14页珍藏版)》请在冰点文库上搜索。
《C++面向对象程序设计》谭浩强版复习总结
第1章C++基础
endl换行并刷新输出流
setw(n)设置字段位数为n
hex,oct,dec十六进制,八进制,十进制表示
setfill定义填充字符
setprecision定义浮点数的精度
left,right左对齐,右对齐
showpoint强制显示小数点以及全部尾部0
C++通过给常量命名的方式定义常量:
const<数据类型名><常量名>=<表达式>
用const定义的标识符常量时,一定要对其初始化。
在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。
函数声明的一般形式为
函数类型函数名(参数表)
函数模板的定义
template
函数定义
例子:
template
Tmax(Ta,Tb){
return(a>b)a:
b;
}
定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔:
template
例子:
template
T1max(T1a,T2b){
return(a>b)a:
(T1)b;
}
有默认参数的函数:
实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端
引用
定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。
<类型>&<引用变量名>=<原变量名>;
其中原变量名必须是一个已定义过的变量。
如:
intmax;
int&refmax=max;
refmax并没有重新在内存中开辟单元,只是引用max的单元。
max与refmax在内存中占用同一地址,即同一地址两个名字。
对引用类型的变量,说明以下几点:
1、引用在定义的时候要初始化
2、对引用的操作就是对被引用的变量的操作。
3、引用类型变量的初始化值不能是一个常数。
4、一旦引用被声明,它就不能再指向其它的变量。
5、对引用的初始化,可以用一个变量名,也可以用另一个引用。
6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。
当&m的前面有类型符时(如int&m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。
7、对常量(用const声明)的引用使用如下方式:
inti=5;
constint&a=i;
内联函数定义的一般格式为:
inline<函数值类型><函数名>(<参数表>)
{
<函数体>
}
作用域运算符
:
:
a表示全局作用域中的变量a。
注意:
不能用:
:
访问函数中的局部变量
new运算从堆中分配一块与<类型>相适应的大小为<元素个数>的数组存储空间,若分配成功,将这块存储空间的起始地址存入<指针变量名>,否则置<指针变量名>的值为NULL(空指针值,即0)。
new的使用格式为:
<指针变量名>=new<类型>[<元素个数>];
delete运算符用来释放<指针变量名>指向的动态存储空间。
使用格式如下:
delete<指针变量名>或
delete[]<指针变量名>
第2章面向对象基本概念
面向过程编程与面向对象编程的区别:
面向过程编程先确定算法,再确定数据结构;
面向对象编程先确定数据结构,再确定运算。
类定义:
class<类名>
{
<访问控制符>:
<成员函数的声明>
<访问控制符>:
<数据成员的声明>
};
<成员函数的实现>
若在类体外实现,则需要使用作用域运算符“:
:
”,用它来标识某个成员函数是属于哪个类的,其定义格式如下:
<函数值类型><类名>:
:
<成员函数名>(<参数表>)
{
<函数体>
}
类外访问对象中的成员可以有3种方法:
通过对象名和成员运算符访问对象中的成员。
<对象名>.<公有成员>
通过指向对象的指针变量访问对象中的成员。
<对象指针名>-><公有成员>
通过对象的引用访问对象中的成员。
析构函数其定义格式如下:
<类名>:
:
~<类名>()
{
<函数体>
}
在一般情况下,调用构造函数与声明对象的顺序相同,而调用析构函数的次序正好与创建对象的顺序相反。
三种构造函数
Box();静态成员>
<类名>:
:
<静态成员>
静态成员函数就是使用static关键字声明的成员函数。
静态成员函数可以直接访问该类的静态成员,但不能直接访问类中的非静态成员。
第3章详解对象
对象指针就是用于存放对象数据起始地址的变量。
声明对象指针的一般格式为:
<类名>*<对象指针名>;
对象指针的初始化一般格式为:
<数据类型>*<对象指针名>=&<对象名>;
<对象指针名>=&<对象名>;
通过指针访问对象成员一般格式如下:
<对象指针名>-><公有成员>
boxp->volumn();
(*<对象指针名>).<公有成员>
(*boxp).volumn();
this指针是一个特殊的隐含指针,它隐含于每一个成员函数(静态成员函数除外)中,也就是说,每个成员函数都有一个this指针参数。
this指针指向调用该函数的对象,即this指针的值是当前被调用的成员函数所在的对象的起始地址。
复制构造函数中隐含使用this指针:
TAdd(constTAdd&p)
{
this->x=;this->y=;
cout<<"copyconstructor."< } 同样也可以使用*this来标识调用该成员函数的当前对象。 xthis->x(*this).x this指针是一个const指针,成员函数不能对其进行赋值。 静态成员中不能访问this指针,因为静态成员函数不从属于任何对象。 指向非静态数据成员的指针一般形式为: 数据类型名*指针变量名; 定义指向公有成员函数的指针变量的一般形式为: 数据类型名(类名: : *指针变量名)(参数列表); 使指针变量指向一个公有成员函数的一般形式为: 指针变量名=&类名: : 成员函数名 常量定义格式如下: const<数据类型名><常量名>=<表达式>; 常对象是其数据成员值在对象的整个生存期间内不能被改变的对象。 const<类名> <对象名>(<初始化值>); <类名>const<对象名>(<初始化值>); 常成员函数 通过常成员函数来引用本类中的常数据成员。 <数据类型><函数名>(<参数表>)const; 声明一维对象数组的一般格式为: <类名><数组名>[<下标表达式>] 第4章运算符重载 重载为类的成员函数格式如下: <类名>operator<运算符>(<参数表>) {函数体} Aoperator+(A&); ++为前置运算符时,它的运算符重载函数的一般格式为: ++为后置运算符时,它的运算符重载函数的一般格式为: 运算符重载函数不能定义为静态的成员函数,因为静态的成员函数中没有this指针。 友元声明以关键字friend开始,只能出现在被访问类的定义中。 具体格式如下: friend<函数值类型><函数名>(<参数表>); friendclass<类名>; 友元函数可以访问该类中的所有成员(公有的、私有的和保护的) 通常使用友元函数来取对象中的数据成员值,而不修改对象中的成员值,保证数据安全。 重载为类的友元函数语法形式 friend<函数值类型>operator<运算符>(<参数表>) {<函数体>;} ++为前置运算符时,它的运算符重载函数的一般格式为: Aoperator++(A&a) ++为后置运算符时,它的运算符重载函数的一般格式为: Aoperator++(A&a,int) 重载提取运算符的一般格式为: friendistream&operater>>(istream&,ClassName&); istream&operater>>(istream&is,ClassName&f){…} 重载输出(插入)运算符的一般格式为: friendostream&operater>>(ostream&,ClassName&); ostream&operater>>(ostream&is,ClassName&f){…} 重载类型转换运算符函数格式: operator〈返回基本类型名〉() { …… return〈基本类型值〉 } 类类型转换函数只能是成员函数,不能是友元函数。 转换函数的操作数是对象。 第5章继承与派生 派生是指由基类创建新类的过程。 classA {inti; 函数名>(ios: : <状态标志>) (ios: : showpos); (ios: : scientific); (ios: : showpos|ios: : scientific); 设置输出宽度函数有两种形式,其格式分别如下: intios: : width(intlen) intios: : width() 第一种形式是设置输出宽度,并返回原来的输出宽度; 第二种形式是返回当前输出宽度,默认输出宽度为0。 只对其后的第一个输出项有效。 填充字符的作用是当输出值不满输出宽度时用填充字符来填充,默认填充字符为空格。 它与width()函数配合使用,否则没有意义。 设置填充字符函数有两种形式,其格式分别如下: charios: : fill(charch) charios: : fill() 第一种形式是重新设置填充字符,并返回设置前的填充字符; 第二种形式是返回当前的填充字符。 设置浮点数输出精度有两种形式,其格式分别如下: intios: : precision(intp) intios: : precision() 第一种形式是重新设置输出精度,并返回设置前的输出精度; 第二种形式是返回当前的输出精度。 默认输出精度为6 用get函数读入一个字符 (1)不带参数的get函数 ()用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。 若遇到输入流中的文件结束符,则函数返回文件结束标志EOF。 (2)有一个参数的get函数 (ch)用来从输入流中读取一个字符,赋给字符变量ch。 读取成功返回非0值(真),如失败(遇文件结束符)则函数返回0值(假)。 3)有三个参数的get函数 (字符数组/字符指针,字符个数n,终止字符) 从输入流中读取n-1个字符,赋给指定的字符数组(或字符指针指向的数组)。 如果在读取n-1个字符之前遇到指定的终止字符,则提前读取结束。 如果读取成功返回非0值(真),如失败(遇文件结束符)则函数返回0值(假)。 用getline函数读入一行字符 (字符数组(或字符指针),字符个数n,终止字符) 从输入流中读取一行字符,其用法与带3个参数的get函数类似。 eof函数 无参函数,表示文件结束。 从输入流读取数据,如果到达文件末尾(遇文件结束符),返回非零值(真),否则为0(假)。 while(! ()) peek函数 无参函数,表示“观察”,观测下一个字符。 返回值是当前指针指向的当前字符,但只是观测,指针仍停留在当前位置,并不后移。 如果要访问的字符是文件结束符,则函数值是EOF。 c=(); putback函数 将前面用get或getline函数从输入流中读取的字符ch返回到输入流,插入到当前指针位置,以供后面读取。 控制符不属于任何类成员,定义在iomanip头文件中 设置输入/输出宽度setw(int) 用整型参数来制定输入/输出域的宽度。 使用时只对其后一项输入/输出有效。 当用于输出时,若实际宽度小于设置宽度时,数据向右对齐,反之则按数据的实际宽度输出。 当用于输入时,若输入的数据宽度超过设置宽度时,超出的数据部分被截断而被作为下一项输入内容。 设置输出填充字符setfill(char) 与ios: : fill相同,常与setw(int)联合使用,从而向不满设置输出宽度的空间填入指定的字符,不设置则填空格。 设置后直至下一次设置前一直有效。 参数可以是字符常量或字符变量。 设置输出精度setprecision(int) 指明输出实数的有效位数。 参数为0时,按默认有效位数6输出。 在以fixed形式和scientific形式输出时参数为小数位数。 setiosflags(ios: : fixed)用定点方式表示实数。 setiosflags(ios: : scientific)用科学记数法方式表示实数。 如果setprecision(n)与setiosflags(ios: : fixed)合用,可以控制小数点右边的数字个数。 如果setprecision(n)与setiosflags(ios: : scientific)合用,可以控制科学记数法中尾数的小数位数。 setiosflags(ios: : left)输出数据左对齐 setiosflags(ios: : right)输出数据右对齐 设置输入/输出整型数数制dec、hex和oct。 控制换行的控制符endl 代表输出单字符“\0”的控制符ends open()函数的原型在fstream中定义。 其原型为: voidopen(char*filename,intmod,intaccess); 其中第一个参数是用来传递文件名;第二个参数的值决定文件的使用方式;第三个参数的值决定文件的访问方式。 对于ifstream流类,mod的值为ios: : in;对于ofstream流类,mod的值为ios: : out
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+面向对象程序设计 C+ 面向 对象 程序设计 谭浩强版 复习 总结