C++ 类和对象
- 类和对象的概念:类是对象的蓝图,包含数据成员和成员函数。对象是类的实例,用于访问类中定义的数据和函数。例如,
Room
类可用于计算房间的面积和体积。 - 访问类成员:使用点运算符(
.
)来访问类的数据成员和成员函数。例如,room1.length = 42.5;
初始 化room1
对象的length
成员,而room1.calculateArea();
调用calculateArea()
函数。 - 公共和私有访问修饰符:
public
关键字表示成员可以在类外部访问,而private
关键字限制成员只能在类内部访问。例如,私有成员不能直接从main()
函数访问,而是通过公共成员函数间接访问。
在先前的教程中,我们学习了函数和变量。有时将相关的函数和数据放在一个地方是可取的,这样逻辑上更合理,操作起来也更容易。
假设我们需要存储一个矩形房间的长度、宽度和高度,并计算其面积和体积。
为了处理这个任务,我们可以创建三个变量,比如长度、宽度和高度,以及 calculateArea()
和 calculateVolume()
函数。
然而,在 C++ 中,与其创建单独的变量和函数,不如将这些相关的数据和函数包装在一个地方(通过创建对象)。这种编程范式被称为面向对象编程。
但是,在我们能够创建对象并在 C++ 中使用它们之前,我们首先需要了解类。
C++ 类
类是对象的蓝图。
我们可以将类想象为一座房子的草图(原型)。它包含了关于楼层、门窗等的所有细节。根据这些描述我们建造房子。房子就是对象。
创建类
在 C++ 中使用关键字 class
后跟类名来定义类。
类的主体在花括号内定义,并在末尾用分 号终止。
class className {
// 一些数据
// 一些函数
};
例如,
class Room {
public:
double length;
double breadth;
double height;
double calculateArea(){
return length * breadth;
}
double calculateVolume(){
return length * breadth * height;
}
};
这里,我们定义了一个名为 Room
的类。
类内部声明的变量 length、breadth 和 height 被称为数据成员。而函数 calculateArea()
和 calculateVolume()
被称为类的成员函数。
C++ 对象
当定义了一个类时,只有对象的规格被定义;没有分配内存或存储空间。
要使用类中定义的数据和访问函数,我们需要创建对象。
C++ 中定义对象的语法
className objectVariableName;
我们可以像下面这样创建 Room
类(在上面的例子中定义)的对象:
// 示例函数
void sampleFunction() {
// 创建对象
Room room1, room2;
}
int main(){
// 创建对象
Room room3, room4;
}
这里,在 sampleFunction()
中创建了两个 Room
类的对象 room1 和 room2。同样地,在 main()
中创建了对象 room3 和 room4。
正如我们所见,我们可以在程序的任何函数中创建一个类的对象。我们还可以在类内部或其他类中创建类的对象。
此外,我们可以从单个类创建任意多的对象。
C++ 访问数据成员和成员函数
我们可以使用 .
(点)运算符访问类的数据成员和成员函数。例如,
room2.calculateArea();
这将调用 Room
类中对象 room2 的 calculateArea()
函数。
同样地,数据成员可以这样访问:
room1.length = 5.5;
在这种情况下,它将 room1 的 length 变量初始化为 5.5
。
示例 1:C++ 编程中的对象和类
// 程序演示 C++ 编程中对象和类的工作原理
#include <iostream>
using namespace std;
// 创建类
class Room {
public:
double length;
double breadth;
double height;
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// 创建 Room 类的对象
Room room1;
// 为数据成员赋值
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
// 计算并显示房间的面积和体积
cout << "房间面积 = " << room1.calculateArea() << endl;
cout << "房间体积 = " << room1.calculateVolume() << endl;
return 0;
}
输出
房间面积 = 1309
房间体积 = 25132.8
在这个程序中,我们使用了 Room
类及其对象 room1 来计算房间的面积和体积。
在 main()
中,我们使用以下代码为长度、宽度和高度赋值:
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
然后我们调用了 calculateArea()
和 calculateVolume()
函数来执行必要的计算。
请注意程序中 public
关键字的使用。这意味着成员是公共的,可以在程序的任何地方访问。
根据我们的需求,我们也可以使用 private
关键字创建私有成员。私有成员只能在类内部访问。例如,
class Test {
private:
int a;
void function1() { }
public:
int b;
void function2() { }
}
这里,a 和 function1()
是私有的。因此,它们不能从类外部访问。
另一方面,b 和 function2()
可以在程序的任何地方访问。
要了解有关公共和私有关键字的更多信息,请访问我们的 C++ 类访问修饰符教程。
示例 2:C++ 类中使用 public 和 private
// 程序演示 C++ 类中 public 和 private 的工作原理
#include <iostream>
using namespace std;
class Room {
private:
double length;
double breadth;
double height;
public:
// 函数初始化私有变量
void initData(double len, double brth, double hgt) {
length = len;
breadth = brth;
height = hgt;
}
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// 创建 Room 类的对象
Room room1;
// 将私有变量的值作为参数传递
room1.initData(42.5, 30.8, 19.2);
cout << "房间面积 = " << room1.calculateArea() << endl;
cout << "房间体积 = " << room1.calculateVolume() << endl;
return 0;
}
输出
房间面积 = 1309
房间体积 = 25132.8
上面的例子与第一个示例几乎相同,除了类变量现在是私有的。
由于变量现在是私有的,我们不能直接在 main()
中访问它们。因此,使用以下代码将是无效的:
// 无效代码
obj.length = 42.5;
obj.breadth = 30.8;
obj.height = 19.2;
相反,我们使用公共函数 initData()
通过函数参数 double len
、double brth
和 double hgt
来初始化私有变量。
要了解有关对象和类的更多信息,请访问这些主题: