首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 類別(Class)基礎入門:從結構體到封裝與存取控制

     編輯:C++ 入門

類別:結構體的進化

在 C 語言中,struct 只能將資料聚合;C++ 的 類別 更進一步,將資料(成員變數)與操作資料的函式(成員函式)封裝在同一個邏輯單元中。定義類別使用關鍵字 class(或 struct,預設存取權限不同)。

基本語法與成員存取標籤

class 類別名稱 {
    存取標籤1:
        成員宣告...
    存取標籤2:
        成員宣告...
};

三種存取標籤(權限標籤)控制成員可見性:

  • private(私有): 僅類別內部成員函式或 friend 函式/類別可存取。預設為 private(class 關鍵字)。
  • protected(受保護): 類別內部、friend 以及衍生類別 可存取。
  • public(公有): 任何擁有物件的程式碼皆可透過 . 或 -> 存取。

範例:矩形類別

class Rectangle {
    int width, height;          // private 預設
public:
    void set_values(int, int);  // 介面
    int area() { return width * height; } // 內定義,隱含 inline
};

類別名稱 vs 物件名稱: Rectangle 是型別(如 int),rect 是變數(如 a)。

成員函式的類外定義與範圍解析運算子 ::

複雜函式通常在類別外定義,需加上類別名稱與 :::

void Rectangle::set_values(int x, int y) {
    width = x;   // 可存取 private 成員
    height = y;
}

:: 賦予成員正確的類別作用域,使其能像在類內一樣存取 private 成員。

建立多個物件:各自擁有獨立資料成員

Rectangle rect, rectb;
rect.set_values(3, 4);
rectb.set_values(5, 6);
cout << rect.area() << endl;   // 12
cout << rectb.area() << endl;  // 30

每個物件擁有獨立的 width、height,實現了「資料與操作綁定」的物件導向核心思想。

補充:inline 與定義位置的差異

類別內定義的函式隱含 inline,編譯器可能優化為內聯展開;類外定義則視為普通成員函式。行為相同,優化機會不同。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved