学习笔记:面向对象程序设计技术(C++版)
======================================
CONTENTS
类
类的构成
成员函数的定义
对象的定义和使用
构造函数和析构函数
友员成员
静态成员
对象成员
常数成员
继承
单继承
多继承
多态
======================================
类
类的构成
类主要由3部分组成:类名、数据成员(data member,也称为属性)、成员函数(member function,也称为服务)。
其中数据成员和成员函数又分为3种,分别是:公有数据成员和成员函数、保护数据成员和成员函数、私有数据成员和成员函数。类的一般定义为:
class className
{
public:
data members;
member functions;
protected:
data members;
member functions;
private:
data members;
member functions;
};
成员函数的定义
把类的定义和实现放在不同的文件之中,这是一个软件开发人员的良好编程规范。
原因如下:
(1)类的实现围歼通常较大,将两者混在一起不便与阅读、管理和维护。
对象的定义和使用
定义了对象后,就可以通过调用它的成员函数来实现具体功能。
定义对象的方法:
类名 对象名;
调用成员函数的方法:
对象名.方法名;
构造函数和析构函数
当一个对象被创建时,它是否能被正确地初始化,是我们要关心的。
在编程中对变量和函数参数的初始化是为了使编程更为便捷、有效,同时可以减少程序出错的可能性。对对象的初始化同样是处于这些目的。
对对象的初始化是通过构造函数完成的,主要对数据成员进行初始化,并对指针分配内存。
析构函数也是一个特殊成员函数,它的主要功能是对类中动态分配的内存进行释放,它在对象消失时自动调用。
友员成员
在类的定义中,类的私有数据和保护数据不能随意被外部函数访问或修改,只能由类本身的函数访问修改。
这导致了外部函数对类的私有数据不可访问性,为程序的重用性和二次开发带来极大不便。
通过定义友员可以达到由外部函数直接访问类的私有数据的目的。
静态成员
为了避免程序在执行过程中对不能修改的对象进行修改,可以将对象或函数声明为常数成员。
继承
定义单继承的方法:
class 派生类名:派生类型 基类名
{ };
定义多继承的方法:
class 派生类名:派生类型1 基类名1,派生类型2 基类名2,..,派生类型n 基类名n
{ };
多态
======================================
CONTENTS
类
类的构成
成员函数的定义
对象的定义和使用
构造函数和析构函数
友员成员
静态成员
对象成员
常数成员
继承
单继承
多继承
多态
======================================
类
类的构成
类主要由3部分组成:类名、数据成员(data member,也称为属性)、成员函数(member function,也称为服务)。
其中数据成员和成员函数又分为3种,分别是:公有数据成员和成员函数、保护数据成员和成员函数、私有数据成员和成员函数。类的一般定义为:
class className
{
public:
data members;
member functions;
protected:
data members;
member functions;
private:
data members;
member functions;
};
成员函数的定义
把类的定义和实现放在不同的文件之中,这是一个软件开发人员的良好编程规范。
原因如下:
(1)类的实现围歼通常较大,将两者混在一起不便与阅读、管理和维护。
(2)将类中的成员函数的实现放在其定义文件中与放在实现文件中,在编译时的含义是不一样的,若将成员函数的实现直接放在类的定义中,则类的成员函
数将作为 内联函数处理。显然将所有的成员函数都作为内联函数处理是不合适的。
(3)对软件开发商来说,他们可以向用户提供一些程序模块,这些程序模块往往只向用户公开类的定义,即借口,而不公开程序的源代码,类的定义与实现
的分开管理可以很好地解决这个问题。
(4)便于团体式的大型软件的开发。对象的定义和使用
定义了对象后,就可以通过调用它的成员函数来实现具体功能。
定义对象的方法:
类名 对象名;
调用成员函数的方法:
对象名.方法名;
构造函数和析构函数
当一个对象被创建时,它是否能被正确地初始化,是我们要关心的。
在编程中对变量和函数参数的初始化是为了使编程更为便捷、有效,同时可以减少程序出错的可能性。对对象的初始化同样是处于这些目的。
对对象的初始化是通过构造函数完成的,主要对数据成员进行初始化,并对指针分配内存。
析构函数也是一个特殊成员函数,它的主要功能是对类中动态分配的内存进行释放,它在对象消失时自动调用。
友员成员
在类的定义中,类的私有数据和保护数据不能随意被外部函数访问或修改,只能由类本身的函数访问修改。
这导致了外部函数对类的私有数据不可访问性,为程序的重用性和二次开发带来极大不便。
通过定义友员可以达到由外部函数直接访问类的私有数据的目的。
静态成员
一旦创建了一个对象,则这个对象将拥有类中所有的成员,如果某个数据对所有的对象都一样,则这个数据只要有一个拷贝,而不是每个对象都重复定义这个数
据,形成内存浪费。简单说:一个数据拷贝,所有对象共享。这就可以通过定义静态数据成员来实现。
对象成员通过对一个类的对象作为另一个类的成员,来丰富类的数据成员的表示途径,从而可以通过简单的类来定义复杂的类,实现代码的重用和共享,提高代码的可维
护性。
常数成员为了避免程序在执行过程中对不能修改的对象进行修改,可以将对象或函数声明为常数成员。
继承
定义单继承的方法:
class 派生类名:派生类型 基类名
{ };
定义多继承的方法:
class 派生类名:派生类型1 基类名1,派生类型2 基类名2,..,派生类型n 基类名n
{ };
多态
对于同一条消息,不同的对象有不同的反应,这种不同的反应,表现为c++语言中的多态性。处理这个问题可以采用静态联编(通过函数重载和运算符重载实现)
和动态联编(通过继承和虚函数实现)的方法调用相应的函数。
多态性的应用可以使编程显得更为简捷、便利,它为程序的模块化设计提供了又一手段。