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

C++ 類別定義與物件建立完整指南

     編輯:C++ 基礎

類別:物件的藍圖

class 關鍵字定義類別,內含成員變數與成員函數。類別本身**不佔記憶體**,只是型別聲明;物件是類別的**實例**,佔用實際儲存空間。

基本語法

class Student {
public:
    char* name;
    int age;
    float score;
    void say() {
        cout << name << " 年齡 " << age << " 成績 " << score << endl;
    }
};
  • 類別名慣用 **PascalCase**(首字母大寫)。
  • 結尾**分號不可省略**(};)。
  • public: 使後續成員對外可存取(詳細見存取權限章節)。

建立物件:兩種儲存區、兩種語法

自動物件(棧上)

int main() {
    Student stu;           // 建立
    stu.name = "小明";     // 成員存取用 .
    stu.age = 15;
    stu.score = 92.5f;
    stu.say();
    return 0;
} // stu 自動銷毀

動態物件(堆上)

int main() {
    Student* pStu = new Student; // 必須用指標接收,否則記憶體洩漏
    pStu->name = "小明";         // 成員存取用 ->
    pStu->age = 15;
    pStu->score = 92.5f;
    pStu->say();
    delete pStu;                 // 釋放記憶體,呼叫析構函數
    return 0;
}

關鍵差異:new 回傳位址,物件無名(匿名),**必須用指標持有**;未 delete 造成記憶體洩漏。陣列形式 new Student[10] 需配對 delete[]。

物件陣列

Student classA[30];        // 棧上 30 個 Student
Student* classB = new Student[50]; // 堆上 50 個
// 使用 classA[i].say() 或 classB[i].say()
delete[] classB;

成員存取運算子總結

  • .:物件/參考 存取成員(stu.name)。
  • ->:指標 存取成員(pStu->name,等價 (*pStu).name)。

類別定義位置

  • 通常置於**全域/命名空間作用域**(函數外),供多函數共用。
  • 也可置於函數內(區域類別),但極少使用,作用域侷限於該函數。

完整可執行範例

#include <iostream>
using namespace std;

class Student {
public:
    char* name;
    int age;
    float score;
    void say() {
        cout << name << " 年齡 " << age << " 成績 " << score << endl;
    }
};

int main() {
    // 自動物件
    Student stu;
    stu.name = "小明"; stu.age = 15; stu.score = 92.5f;
    stu.say();

    // 動態物件
    Student* p = new Student;
    p->name = "李華"; p->age = 16; p->score = 96;
    p->say();
    delete p;

    return 0;
}

總結

  • class 定義型別,new/自動建立實例。
  • 棧上物件:自動管理、作用域綁定、用 . 存取。
  • 堆上物件:手動管理、new/delete 配對、用 -> 存取、必須用指標持有。
  • 記住 delete 釋放動態記憶體,養成 RAII 思維(後續章節將介紹智慧指標)。
  1. 上一篇文章:
  2. 下一篇文章:
  • --热点文章
  • Copyright © 程式碼之家 All Rights Reserved
    方式儲存區語法生命週期記憶體管理
    自動物件堆疊Student stu;離開作用域自動銷毀編譯器自動
    動態物件堆積Student* p = new Student;手動 delete p 才銷毀程式設計師負責