类是一种用户自定义的数据类型,它的一般定义格式如下:
class <类名>
{
private:
<私有数据成员和成员函数>;
protected:
<保护数据成员和成员函数>;
public:
<公有数据成员和成员函数>;
}
<各个成员函数的实现>;
《C++程序设计与面向对象》第三章主要探讨了C++中的核心概念——类和对象。类是面向对象编程的基础,它允许我们自定义数据类型,封装数据和操作这些数据的函数,以此来构建复杂的软件系统。
3.1 类和类的定义
类的定义是创建一个新的数据类型的声明,它由三部分组成:私有(private)、保护(protected)和公有(public)成员。私有成员只能被类内部的函数访问,保护成员能被类及其子类访问,而公有成员可以被任何代码访问。类定义的基本语法如下:
```cpp
class ClassName {
private:
// 私有成员
protected:
// 保护成员
public:
// 公有成员
};
```
例如,`Tdate` 类定义了一个表示日期的数据结构,包括私有的年、月、日成员和公有的设置日期、判断闰年和打印日期的方法。
3.1.1 类的定义格式
类的定义不包括对数据成员的初始化,初始化应在类的构造函数中完成。例如,`Tdate` 类的`year`、`month`和`day`不应在类定义中初始化。同时,类定义通常放置于头文件中,并在末尾添加分号。
3.1.2 类的成员函数
成员函数是对类数据成员进行操作的函数,它们可以是公有、私有或保护的。成员函数的定义可以在类定义内部,如 `Location` 类的 `init` 函数所示,也可以在类定义外部。定义格式如下:
```cpp
返回类型 ClassName::成员函数名(参数列表) {
函数体
}
```
3.2 对象和对象的定义
对象是类的实例,通过`new`关键字动态创建或直接在栈上声明。每个对象都有自己独立的成员变量,可以调用类中的成员函数执行特定的操作。
3.3 构造函数与析构函数
构造函数是类的一个特殊成员函数,用于初始化新创建的对象。默认构造函数没有参数,而带参数的构造函数可以为对象提供初始状态。析构函数则在对象生命周期结束时自动调用,负责清理资源。
3.4 拷贝构造函数
拷贝构造函数是一个特殊的构造函数,用于创建一个新对象作为现有对象的副本。它接收一个同类型的对象作为参数,并使用这个参数来初始化新对象。
3.5 局部类和嵌套类
局部类是在函数或块作用域内定义的类,其作用范围仅限于此函数或块。嵌套类是定义在一个类内部的类,它可以访问外部类的私有和保护成员。
3.6 引用
引用是C++中的一个特殊类型,它是已有对象的别名,一旦引用被初始化,就不能改变引用的对象。引用在函数参数传递和返回值等方面有重要作用,可以避免复制对象的开销。
3.7 常类型
常量成员函数和常量对象使得类的某些部分不可修改,提高了代码的安全性和效率。常量成员函数以`const`关键字修饰,常量对象在其声明时用`const`修饰。
总结,本章详细介绍了C++中类和对象的基本概念,包括它们的定义、成员函数、构造函数和析构函数,以及拷贝构造函数、局部类和嵌套类、引用和常量类型等高级特性。这些知识是理解和编写面向对象程序的基础。