《C++面向对象程序设计》谭浩强版复习总结文档格式.docx
- 文档编号:14823302
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:14
- 大小:41.34KB
《C++面向对象程序设计》谭浩强版复习总结文档格式.docx
《《C++面向对象程序设计》谭浩强版复习总结文档格式.docx》由会员分享,可在线阅读,更多相关《《C++面向对象程序设计》谭浩强版复习总结文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
Tmax(Ta,Tb){
return(a>
b)?
a:
b;
}
定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class用逗号分隔:
template<
classT1,classT2,classT3>
classT1,classT2>
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();
//无参构造函数
Box(inth,intw,intlen)
height(h),width(w),length(len){}
//带参构造函数
复制构造函数定义
<类名>(<参数表>);
<类名>(const类名〉&
<对象名>)
Box(constBox&
b);
复制构造函数
复制构造函数只有一个参数,并且是对同类对象的引用。
静态成员是类的所有对象共享的成员,而不是某个对象的成员,它在对象中不占存储空间,是属于整个类的成员。
静态成员定义格式如下:
static<静态成员的定义>;
不能用参数初始化表对静态数据成员初始化,也不能在构造函数体内初始化,静态数据成员只能在类体外进行初始化。
静态数据成员初始化格式如下:
<数据类型><类名>:
<静态数据成员名>=<值>;
在类的成员函数中可以直接访问该类的静态数据成员,而不必使用成员访问运算符或类名限定修饰符。
在类外必须使用成员访问运算符或类名限定修饰符访问公共静态数据成员。
<对象名>.<静态成员>
<静态成员>
静态成员函数就是使用static关键字声明的成员函数。
静态成员函数可以直接访问该类的静态成员,但不能直接访问类中的非静态成员。
第3章详解对象
对象指针就是用于存放对象数据起始地址的变量。
声明对象指针的一般格式为:
类名>
*<
对象指针名>
;
对象指针的初始化一般格式为:
数据类型>
=&
对象名>
通过指针访问对象成员一般格式如下:
->
<
公有成员>
boxp->
volumn();
(*<
对象指针名>
).<
(*boxp).volumn();
this指针是一个特殊的隐含指针,它隐含于每一个成员函数(静态成员函数除外)中,也就是说,每个成员函数都有一个this指针参数。
this指针指向调用该函数的对象,即this指针的值是当前被调用的成员函数所在的对象的起始地址。
复制构造函数中隐含使用this指针:
TAdd(constTAdd&
p)
this->
x=p.x;
this->
y=p.y;
cout<
"
copyconstructor."
endl;
同样也可以使用*this来标识调用该成员函数的当前对象
x
(*this).x
this指针是一个const指针,成员函数不能对其进行赋值。
静态成员中不能访问this指针,因为静态成员函数不从属于任何对象。
指向非静态数据成员的指针一般形式为:
数据类型名*指针变量名;
定义指向公有成员函数的指针变量的一般形式为:
数据类型名(类名:
*指针变量名)(参数列表);
使指针变量指向一个公有成员函数的一般形式为:
指针变量名=&
类名:
成员函数名
常量定义格式如下:
const<数据类型名><常量名>=<表达式>;
常对象是其数据成员值在对象的整个生存期间内不能被改变的对象。
const<类名><对象名>(<初始化值>);
<类名>const<对象名>(<初始化值>);
常成员函数
通过常成员函数来引用本类中的常数据成员。
<数据类型><函数名>(<参数表>)const;
声明一维对象数组的一般格式为:
<类名><数组名>[<下标表达式>]
第4章运算符重载
重载为类的成员函数格式如下:
<类名>operator<运算符>(<参数表>)
{函数体}
Aoperator+(A&
);
++为前置运算符时,它的运算符重载函数的一般格式为:
<type>operator++()
++为后置运算符时,它的运算符重载函数的一般格式为:
<type>operator++(int)运算符重载函数不能定义为静态的成员函数,因为静态的成员函数中没有this指针。
友元声明以关键字friend开始,只能出现在被访问类的定义中。
具体格式如下:
friend<函数值类型><函数名>(<参数表>);
friendclass<类名>;
友元函数可以访问该类中的所有成员(公有的、私有的和保护的)
通常使用友元函数来取对象中的数据成员值,而不修改对象中的成员值,保证数据安全。
重载为类的友元函数语法形式
friend<函数值类型>operator<运算符>(<参数表>)
{<函数体>;
}
Aoperator++(A&
a)++为后置运算符时,它的运算符重载函数的一般格式为:
a,int)
重载提取运算符的一般格式为:
friendistream&
operater>
>
(istream&
ClassName&
istream&
is,ClassName&
f){}
重载输出(插入)运算符的一般格式为:
friendostream&
(ostream&
ostream&
f){}重载类型转换运算符函数格式:
operator〈返回基本类型名〉()
return〈基本类型值〉
类类型转换函数只能是成员函数,不能是友元函数。
转换函数的操作数是对象
第5章继承与派生
派生是指由基类创建新类的过程。
classA
{inti;
//基类成员};
classB:
publicA//A派生了B,B继承了A,
〃B自动拥有A的成员
{intj;
//定义派生类的新成员};
派生类的定义格式如下:
class派生类名>:
<继承方式><基类名>
{<派生类新定义成员>};
派生类继承了基类的全部数据成员和除了构造、析构函数之外的全部成员函数,它们在派生类中的访问属性由继承方式控制。
三种继承方式下派生类中基类成员的访问控制权限
基乘\继承成貝在沢方式诜那钗\
成员
公有继承
私有继承
保护继承
公有成员
公有
私有
保护
私有成员
派生类成员不可访问
派生类成员不可访问
保护成员
r保护
无论是哪种继承方式,基类的私有成员在派生类中都是不可被访问的。
只能通过基类的成员函数访问基类的私有数据成员。
解决的办法是通过成员初始化表来完成,在成员初始化表中可以显式调用基类构造函数。
<派生类名>(<总参数表>):
<基类名>(<参数表1>),<对象成员名>(<参数表2>){
<派生类数据成员的初始化>
构造函数调用顺序为:
基类的构造函数一对象成员构造函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+面向对象程序设计 C+ 面向 对象 程序设计 谭浩强版 复习 总结