C++ 中的对象和类


2022年12月22日, Learn eTutorial
1303

C++ 是一种面向对象的编程语言,主要用于将现实世界的事物模型化到程序中。类和对象在所有面向对象的编程语言中都用于实现这一目标。类作为创建具有相似特征的对象的蓝图。C++ 中面向对象方法围绕的核心思想是类和对象概念。它通过减少代码重复和故障排除时间来提高软件效率。

通过真实示例的指导,您现在将掌握 C++ 的类和对象概念。例如,假设您有一个小型图书馆。图书馆中的所有书籍都具有一些共同的特征,例如书名作者名类型。设想您想为图书馆中的所有书籍创建一个目录。您可以创建一个名为 Book 的类,该类作为您图书馆中所有书籍的模板,而不是为您拥有的每一本书单独创建类。

例如

Object Oriented Programming concepts: Student Class in C++

学校里的所有学生都具有一些共同的特征,例如——(参考上图)

  • 姓名
  • 学号
  • 电子邮件 ID
  • 出生日期
  • 体重

为了定义所有这些特征,我们可以创建一个名为 student 的类。

如果一所学校有 2000 名学生,我们需要创建 2000 个针对每个孩子的特定对象才能保存他们的信息。C++ 中的类是一种数据类型,可以拥有许多对象或实例。

C++ 中的类是什么意思?

在 C++ 中,是一种用户定义类型或数据结构,主要使用关键字 class 声明,并具有数据和函数作为其成员。这些成员的访问主要由 3 个访问说明符中的一个控制,例如 private、protected 或 public。

是连接实体特征和功能的蓝图或模板。所有具有相似类型属性的实体或对象都可以分组到一个称为的东西中。封装、数据隐藏和抽象只是类进一步实现的几个基本概念。在 C++ 中,类是一种数据类型,可以拥有许多对象或实例。

Object Oriented Programming concepts: Student Class in C++

我们如何创建一个类?

关键字class用于创建类。

在 C++ 中声明类的语法


class class_name
{
    // class definition
    access_specifier:         // public, protected, or private                  
    data_member1;   // data members
    data_member2;           
    func1(){}       // member functions
    func2(){}  
};
 

解释

  • class:此关键字主要用于声明类,后面跟类名。
  • class_name:这是类名,与关键字 class 一起提供。
  • access_specifier:在声明类成员之前,提供访问说明符。这些说明符控制类成员在类中的访问。说明符可以是 protected、private 或 public。
  • Data_member:这些类变量用作存储数据值的位置。
  • member_function:在类中声明的函数被列为成员函数。

示例 1,让我们创建一个名为“Myclass”的类


class MyClass {       // class
  public:             // it is an access specifier
    int myNum;        // Attribute :int variable
    string myString;  // Attribute :string variable
};
 

解释

  • 使用关键字 class 创建了一个名为 MyClass 的类。
  • 在访问说明符中,public 关键字表示类的成员(属性和方法)可以被外部访问。
  • MyNum(一个整数变量)和 myString(一个字符串变量)都存在于类中。属性用于描述在类中声明的变量。
  • 最后,在类定义末尾加上分号 (;) 。

示例 2


class Rect {
public:
    double length;
    double breadth;

    double calculateArea(){   
        return length * breadth;
    }
};
 

解释:这里定义了一个名为 Rect 的类。

数据成员是类中定义的变量 length 和 width。此外,函数 calculateArea() 被称为类的成员函数。

C++ 中的对象是什么意思?

C++ 中的对象等同于现实世界的实体。假设您身边总是围绕着对象,包括树木、昆虫、桌子、长凳、小狗、汽车等等。这些对象与某种属性和功能相关。同样,C++ 中也存在对象概念。当定义一个类时,它包含了该类类型下所有对象的详细信息。在定义类之后,它可以创建共享相同信息的类似对象,类名作为类型说明符。

对象主要被称为类的实例。定义类时不会分配内存,但在实例化(即创建对象时)时会分配内存。在 C++ 中,类是使用关键字 class 和类名定义的。 

对象在运行时创建,是运行时实体。可以通过对象访问每个类成员。我们必须创建对象才能使用数据并访问类定义的函数。

在 C++ 中定义对象的语法


class class_name
class_name object_name;
 

class_name 指的是要从中创建对象的类的名称。object_name 是将要赋予新对象的名称。以下是根据上面示例 2 的说法,创建 rect 类的对象的方法

示例 3


// sample function
void rectFunct() {
    // create objects
    Rect rect1, rect2;
}
int main(){
    // create objects 
    Rect rect3, rect4;
}
 

解释:这里,函数 rectFunct() 创建了 Rect 类的两个对象 rect1 和 rect2。对象 rect3 和 rect4 以类似的方式在 main 函数中创建。

正如我们所见,类的对象可以在程序的任何函数中创建。我们也可以在类内部或在其他类中创建类的对象。单个类也允许我们创建任意数量的对象。

现在让我们通过使用对象和类来编写一个 C++ 程序

使用对象和类的 C++ 程序


// Program to illustrate the working of objects and class in C++ Programming
#include 
using namespace std;

// let us create a class name 'Rect' for the rectangle
class Rect {
   public:
    double length;
    double breadth;

    double calculateArea() {
        return length * breadth;
    }
};
int main() {

    // create an object of Rect class
    Rect rect1;

    // assign the values in to the data members
    rect1.length = 20;
    rect1.breadth = 60;

    // calculate as well as  display the area of the rectangle
    cout << "So the Area of Rectangle  is:  " << rect1.calculateArea() << endl;

    return 0;
}
 

输出

So the Area of Rectangle  is:  1200

解释

在此程序中,我们使用 Rect 类及其对象 rect1 来计算房间的面积。我们在 main() 中使用以下代码为 length 和 breadth 赋值:

rect1.length = 20;
rect1.breadth = 60;

然后,为了进行必要的计算,我们调用了 calculateArea() 函数。

需要注意的是,该程序使用了 public 术语。这表明该应用程序的用户可以从任何地方访问成员,并且它们是 public 的。