C++语言程序设计

【本章小结】
本章讲述了C++语言中面向对象编程的基本概念基本方法。
在C++语言中，通过class关键字可以定义类，类的成员包括数据成员和成员函数两种。用户定义了新的类之后，就可以定义该类的对象。C++中还定义了一个this指针，它仅能在类的成员函数中访问，它指向该成员函数所在的对象，即当前对象。
在C++中，有两种特殊的成员函数，即构造函数和析构函数。它们分别负责对象的初始化和清除工作。复制构造函数的形参是本类对象的引用，它是用一个对象来初始化另一个对象。如果编程者没有显式定义构造函数（包括复制构造函数），C++编译器就隐式定义缺省的构造函数。
为了实现对象的常量化，C++引入了const函数的概念。const函数不改变对象的数据成员，也不能调用非const函数。常量对象只能调用const函数；但构造函数和析构函数对这个规则例外，它们从不定义为常量成员，但可被常量对象调用（被自动调用）。
在C++中，为了实现类的所有对象对一个或多个类成员的共享，可以定义静态数据成员和静态成员函数。一个类的静态数据成员仅创建和初始化一次，且在程序开始执行的时候创建，然后被该类的所有对象共享；而非静态的数据成员则随着对象的创建而多次创建和初始化。与静态数据成员类似，静态成员函数也是属于类的。静态成员函数仅能访问静态的数据成员，不能访问非静态的数据成员，也不能访问非静态的成员函数，这是由于静态的成员函数没有this指针。
一般来说，类的公有成员能够在类外访问，私有的成员只能被类的其它成员函数访问。但是通过C++中提供的友元概念，可以实现类的私有成员的访问。虽然友元为我们进行程序设计提供了一定的方便性，但是面向对象的程序设计要求类的接口与类的实现分开，对对象的访问通过其接口函数进行。如果直接访问对象的私有成员，就破坏了面向对象程序的信息隐藏和封装特性，虽然提供了一些方便，但有可能是得不偿失的，所以，我们要慎用友元。