类和对象
1. 概述
在面向对象编程(OOP)中,类和对象是两个核心概念。类是对象的蓝图或模板,而对象是类的实例。通过类,我们可以定义对象的属性和行为。
2. 类的定义
类是用户定义的数据类型,它包含数据成员(属性)和成员函数(方法)。类的定义通常包括类的名称、数据成员和成员函数。
2.1 基本语法
class ClassName {
// 访问修饰符:
// public: 成员可以被任何代码访问
// private: 成员只能被类的成员函数访问
// protected: 成员可以被类的成员函数和派生类访问
// 数据成员
int dataMember;
// 成员函数
void memberFunction() {
// 函数体
}
};
2.2 示例:定义一个简单的类
class Rectangle {
private:
int width, height;
public:
void setDimensions(int w, int h) {
width = w;
height = h;
}
int area() {
return width * height;
}
};
在这个例子中,Rectangle 类有两个私有数据成员 width 和 height,以及两个公有成员函数 setDimensions 和 area。
3. 对象的创建
对象是类的实例。我们可以通过定义一个类的对象来使用类中定义的属性和方法。
3.1 基本语法
ClassName objectName;
3.2 示例:创建对象
Rectangle rect;
rect.setDimensions(5, 10);
std::cout << "Area: " << rect.area() << std::endl;
在这个例子中,我们创建了一个 Rectangle 类的对象 rect,并调用了 setDimensions 和 area 方法。
4. 访问修饰符
C++ 提供了三种访问修饰符:
- public: 成员可以被任何代码访问。
- private: 成员只能被类的成员函数访问。
- protected: 成员可以被类的成员函数和派生类访问。
4.1 示例
class Circle {
private:
double radius;
public:
void setRadius(double r) {
radius = r;
}
double getArea() {
return 3.14159 * radius * radius;
}
};
在这个例子中,radius 是私有的,因此不能直接从类的外部访问。我们通过公有的 setRadius 和 getArea 方法来操作 radius。
5. 构造函数和析构函数
构造函数和析构函数是类的特殊成员函数,分别在对象创建和销毁时自动调用。
5.1 构造函数
构造函数用于初始化对象的数据成员。构造函数的名称与类名相同,没有返回类型。
class Point {
private:
int x, y;
public:
Point(int xCoord, int yCoord) {
x = xCoord;
y = yCoord;
}
};
5.2 析构函数
析构函数用于在对象销毁时执行清理操作。析构函数的名称与类名相同,前面加上波浪号 ~,没有返回类型和参数。
class MyClass {
public:
~MyClass() {
// 清理代码
}
};
6. 实践练习
6.1 练习1:定义一个 Student 类
定义一个 Student 类,包含以下成员:
- 私有数据成员:
name(字符串)、age(整数)、gpa(浮点数)。 - 公有成员函数:
setName、setAge、setGpa、getName、getAge、getGpa。
6.2 练习2:创建 Student 对象并操作
创建一个 Student 对象,设置其 name、age 和 gpa,然后输出这些信息。
6.3 练习3:添加构造函数和析构函数
为 Student 类添加一个带参数的构造函数,用于初始化 name、age 和 gpa。同时添加一个析构函数,输出一条消息表示对象被销毁。
7. 总结
类和对象是面向对象编程的基础。通过类,我们可以定义对象的属性和行为,并通过对象来使用这些属性和行为。理解类和对象的概念,以及如何使用构造函数和析构函数,是掌握面向对象编程的关键。
8. 下一步
在掌握了类和对象的基本概念后,你可以继续学习封装、继承和多态等面向对象编程的高级特性。这些特性将进一步增强你对面向对象编程的理解和应用能力。