Latest web development tutorials

C++ 類& 對象

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;          // 声明 Box1,类型为 Box
Box Box2;          // 声明 Box2,类型为 Box

對象Box1 和Box2 都有它們各自的數據成員。

訪問數據成員

類的對象的公共數據成員可以使用直接成員訪問運算符(.) 來訪問。 為了更好地理解這些概念,讓我們嘗試一下下面的實例:

#include <iostream>

using namespace std;

class Box
{
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
};

int main( )
{
   Box Box1;        // 声明 Box1,类型为 Box
   Box Box2;        // 声明 Box2,类型为 Box
   double volume = 0.0;     // 用于存储体积
 
   // box 1 详述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 详述
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;

   // box 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的体积:" << volume <<endl;

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

當上面的代碼被編譯和執行時,它會產生下列結果:

Box1 的体积:210
Box2 的体积:1560

需要注意的是,私有的成員和受保護的成員不能使用直接成員訪問運算符(.) 來直接訪問。 我們將在後續的教程中學習如何訪問私有成員和受保護的成員。

類& 對象詳解

到目前為止,我們已經對C++ 的類和對像有了基本的了解。 下面的列表中還列出了其他一些C++ 類和對象相關的概念,可以點擊相應的鏈接進行學習。

概念描述
类成员函数 类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。
类访问修饰符 类成员可以被定义为 public、private 或 protected。默认情况下是定义为 private。
构造函数 & 析构函数 类的构造函数是一种特殊的函数,在创建一个新的对象时调用。类的析构函数也是一种特殊的函数,在删除所创建的对象时调用。
C++ 拷贝构造函数 拷贝构造函数,是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。
C++ 友元函数 友元函数可以访问类的 private 和 protected 成员。
C++ 内联函数 通过内联函数,编译器试图在调用函数的地方扩展函数体中的代码。
C++ 中的 this 指针 每个对象都有一个特殊的指针 this,它指向对象本身。
C++ 中指向类的指针 指向类的指针方式如同指向结构的指针。实际上,类可以看成是一个带有函数的结构。
C++ 类的静态成员 类的数据成员和函数成员都可以被声明为静态的。