C++ 类和对象



C++ 编程的主要目的是为 C 编程语言添加面向对象特性,而类是支持面向对象编程的 C++ 的核心特性,通常称为用户定义类型。

类用于指定对象的格式,它将数据表示和操纵该数据的方法组合到一个简洁的包中。类中的数据和函数称为类的成员。

C++ 类定义

定义类时,定义的是数据类型的蓝图。这实际上并没有定义任何数据,但它确实定义了类名的含义,即类的对象将包含什么以及对这样的对象可以执行哪些操作。

类定义以关键字`class`后跟类名开头;类体用一对大括号括起来。类定义后面必须跟分号或声明列表。例如,我们使用关键字`class`定义了 Box 数据类型,如下所示:

class Box {
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

关键字`public`确定其后类成员的访问属性。公共成员可以在类的对象作用域内的任何地方从类外部访问。您还可以将类的成员指定为`private`或`protected`,我们将在一个小节中讨论。

定义 C++ 对象

类为对象提供蓝图,因此基本上对象是从类创建的。我们声明类的对象的方式与声明基本类型的变量完全相同。以下语句声明了 Box 类的两个对象:

Box Box1;          // Declare Box1 of type Box
Box Box2;          // Declare Box2 of type Box

Box1 和 Box2 两个对象都将拥有自己的一份数据成员副本。

访问数据成员

可以使用直接成员访问运算符 (.) 访问类的对象的公共数据成员。让我们尝试以下示例来说明:

#include <iostream>

using namespace std;

class Box {
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

int main() {
   Box Box1;        // Declare Box1 of type Box
   Box Box2;        // Declare Box2 of type Box
   double volume = 0.0;     // Store the volume of a box here
 
   // box 1 specification
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 specification
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
   
   // volume of box 1
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Volume of Box1 : " << volume <<endl;

   // volume of box 2
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Volume of Box2 : " << volume <<endl;
   return 0;
}

编译并执行上述代码后,将产生以下结果:

Volume of Box1 : 210
Volume of Box2 : 1560

需要注意的是,不能使用直接成员访问运算符 (.) 直接访问私有和受保护的成员。我们将学习如何访问私有和受保护的成员。

详细介绍类和对象

到目前为止,您已经对 C++ 类和对象有了非常基本的了解。还有更多关于 C++ 类和对象的有趣概念,我们将在下面列出的各个小节中讨论:

序号 概念和描述
1 类成员函数

类的成员函数是在类定义中定义或声明其原型的函数,就像任何其他变量一样。

2 类访问修饰符

类成员可以定义为 public、private 或 protected。默认情况下,成员将被假定为 private。

3 构造函数和析构函数

类的构造函数是类中的一种特殊函数,在创建类的新的对象时调用。析构函数也是一个特殊函数,在创建的对象被删除时调用。

4 复制构造函数

复制构造函数是一个构造函数,它通过使用先前创建的相同类的对象来初始化对象来创建对象。

5 友元函数

友元函数被允许完全访问类的私有和受保护成员。

6 内联函数

使用内联函数,编译器会尝试在函数调用的位置扩展函数体中的代码。

7 this 指针

每个对象都有一个特殊的指针`this`,它指向对象本身。

8 指向 C++ 类的指针

指向类的指针与指向结构体的指针完全相同。实际上,类实际上只是一个包含函数的结构体。

9 类的静态成员

类的成员变量和成员函数都可以声明为静态的。

广告