文档介绍:程序设计实****br/> 第二十二讲总结
田永鸿
httpp//://ai. pku. /c pp2009
.cn/jiaoxue-CPP/2009/
提纲
类和对象
运算符重载
类的继承
虚函数和多态
函数模板、类模板和String类
输入输出流和文件操作
标准模板库
北京大学《程序设计实****课程 2
一、类和对象
(第十一/十二讲)
北京大学《程序设计实****课程
内容提要
类的定义、成员属性、成员函数、类的作用域
对象的创建、存储、访问
构造函数、析构函数
定义、调用时机、在数组中使用构造/析构函数
特殊的构造函数:复制构造函数、转换构造函数
类的特殊成员:static成员、const成员、引用成员、友
元、this指针
特殊对象:const对象、成员对象与封闭类(对象初始
化列表)
北京大学《程序设计实****课程 4
类类象概与对象的概念
通过类,可以定义变量。类定义出来的变量,
也称为类的实例,就是我们所说的“对象”
C++中,类的名字就是用户自定义的类型的名
字。可以象使用基本类型那样来使用它。
和结构变量一样,对象所占用的内存空间的大
小,等于所有成员变量的大小之和。
每个对象各有自己的存储空间。一个对象的某
个成员变量被改变了,不会影响到另一个对象。
北京大学《程序设计实****课程 5
如何使用类的成员变量和成员函数
用法1:
CRectangle r1,r2;
= 5;
(5,4);
Init函数作用在 r2 上,即Init函数执行期间访问的 w
和 h是属于 r2 这个对象的, t 不会影响到 r1
用法2. 指针->成员名
CRec tang le r 1,r 2;
CRectangle * p1 = & r1;
CRectangle * p2 = & r2;
p1->w = 5;
p2->Init(()//5,4); //Init作用在p2指向的对象上
北京大学《程序设计实****课程 6
如何使用类的成员变量和成员函数
用法3:
CRectangle r2;
CRectangle & rr = r2;
= 5;
((,);5,4); // rr的值变了,r2的值也变
void PrintRectangle(CRectangle & r)
{
cout << () << ","<< ();
}
北京大学《程序设计实****课程 7
引用的概念
类型名& 引用名= 某变量名;
上面的写法就定义了一个引用,并将其初始化为引
用某个变量。
某个变量的引用,和这个变量是一回事,相当于该
变量的一个别名
int n = 4;
int & r = n;
r = 4; 定义引用时一定要将其初始
cout << r; //输出 4; 化成引用某个变量,不初始
cout << n; //输出 4; 化编译不过。
n = 5; 引用只能引用变量,不能引
cout << r; //输出5 用常量和表达式
北京大学《程序设计实****课程 8
引用的作用
C语言中,要写交换两个整型变量值的函数,
只能通过指针
void swap( int * a, int * b)
{
int tmp;
tmp = * a; * a = * b; * b = tmp;
}
int n1, n2;
swap(& n1,& n2) ; // n1,n2的值被交换
北京大学《程序设计实****课程 9
引用的作用
有了引用后:
void swap( int & a, int & b)
{
int tmp;
tmp = a; a = b; b = tmp;
}
int n121, n2;
swap(n1,n2) ; // n1,n2的值被交换
北京大学《程序设计实****课程 10