C面向对象程序设计谭浩强版复习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章C++ 基础
endl 换行并刷新输出流
setw(n) 设置字段位数为n
hex,oct,dec 十六进制,八进制,十进制表示
setfill 定义填充字符
setprecision 定义浮点数的精度
left,right 左对齐,右对齐
showpoint 强制显示小数点以及全部尾部0
C++通过给常量命名的方式定义常量:
const<数据类型名><常量名>=<表达式>
用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。
函数声明的一般形式为
函数类型函数名(参数表)
函数模板的定义
template
函数定义
例子:template
T max(T a,T b){
return(a>b)? a:b;
}
定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔:
template
例子:template
T1 max(T1 a,T2 b){
return (a>b) ? a : (T1)b;
}
有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端
引用
定义对变量起另外一个名字 (别名alias),这个名字称为该变量的引用。
<类型> &<引用变量名> = <原变量名>;
其中原变量名必须是一个已定义过的变量。如:
int max ;
int &refmax=max;
refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。
对引用类型的变量,说明以下几点:
1、引用在定义的时候要初始化
2、对引用的操作就是对被引用的变量的操作。
3、引用类型变量的初始化值不能是一个常数。
4、一旦引用被声明,它就不能再指向其它的变量。
5、对引用的初始化,可以用一个变量名,也可以用另一个引用。
6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。
当&m的前面有类型符时(如int &m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。
7、对常量(用const声明)的引用使用如下方式:
int i=5;
const int &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(const TAdd& p)
{
this->x=; this->y=;
cout<<"copy constructor."< } 同样也可以使用*this来标识调用该成员函数的当前对象。