跳到主要内容

C++ 类和对象

提示
  1. 类和对象的概念:类是对象的蓝图,包含数据成员和成员函数。对象是类的实例,用于访问类中定义的数据和函数。例如,Room类可用于计算房间的面积和体积。
  2. 访问类成员:使用点运算符(.)来访问类的数据成员和成员函数。例如,room1.length = 42.5;初始化room1对象的length成员,而room1.calculateArea();调用calculateArea()函数。
  3. 公共和私有访问修饰符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 lendouble brthdouble hgt 来初始化私有变量。

要了解有关对象和类的更多信息,请访问这些主题: