首頁 > 軟體

C++類別與物件及建構函式解構函式基礎詳解

2023-11-22 14:00:17

C++類別與物件

C++是一門物件導向的程式語言。在C++中,我們可以利用類來建立物件,並在程式設計時實現抽象、封裝、繼承和多型等物件導向的特性。下面是關於C++類別和物件的學習內容及範例。

類的定義

在C++中,我們可以通過定義類來描述某種物件的屬性和行為。類的定義可以分為兩部分:宣告和實現。

  • 宣告部分:類的宣告部分通常包含類名、類成員(屬性和方法)的宣告、存取許可權的修飾符等。下面是一個簡單的類宣告範例。
class Car {
  public:
    void StartEngine();
    void StopEngine();
    void SetSpeed(int speed);
    int GetSpeed();
  private:
    int _speed;
};
  • 實現部分:類的實現部分通常包含成員方法的實現程式碼。下面是一個簡單的類實現範例。
void Car::StartEngine() {
    cout << "Engine started." << endl; 
}
void Car::StopEngine() {
    cout << "Engine stopped." << endl; 
}
void Car::SetSpeed(int speed) {
    _speed = speed;
}
int Car::GetSpeed() {
    return _speed;
}

物件的建立

在C++中,我們可以通過類建立物件。物件是類的一個範例,具有類定義的屬性和方法。下面是一個簡單的物件建立範例。

Car myCar;
myCar.StartEngine();
myCar.SetSpeed(50);
cout << "Current speed: " << myCar.GetSpeed() << endl;

建構函式和解構函式

建構函式是一個用於初始化物件的特殊成員函數。在建立物件時,建構函式被自動呼叫。我們可以在建構函式中為物件的屬性賦初值。下面是一個簡單的建構函式範例。

class Car {
  public:
    Car(int speed = 0) {
        _speed = speed;
    }
    void StartEngine();
    void StopEngine();
    void SetSpeed(int speed);
    int GetSpeed();
  private:
    int _speed;
};
// 物件建立時會自動呼叫建構函式
Car myCar(50);

解構函式是一個用於清理物件的特殊成員函數。在物件失去作用時,解構函式被自動呼叫。我們可以在解構函式中釋放物件所佔用的資源。下面是一個簡單的解構函式範例。

class Car {
  public:
    Car(int speed = 0) {
        _speed = speed;
    }
    ~Car() {
        // 釋放 Car 佔用的資源
    }
    void StartEngine();
    void StopEngine();
    void SetSpeed(int speed);
    int GetSpeed();
  private:
    int _speed;
};
// 物件失去作用時會自動呼叫解構函式
Car myCar(50);
myCar.StopEngine();

存取修飾符

在C++中,我們可以通過存取修飾符控制類成員的存取許可權。存取修飾符包括 public、protected 和 private。下面是一個簡單的存取修飾符範例。

class Car {
  public:
    void StartEngine();
  protected:
    void InternalFunction();
  private:
    int _speed;
};
// 可以存取 public 和 protected 成員
class SportsCar : public Car {
  public:
    void HighSpeed();
};
// 僅可以存取 public 成員
class EconomyCar : public Car {
};

繼承

繼承是一種物件導向的概念,可以實現程式碼的重用。在C++中,我們可以通過繼承來實現基礎類別的程式碼重用。派生類通過存取基礎類別的公共介面,可以使用基礎類別中定義的屬性和方法。下面是一個簡單的繼承範例。

class Animal {
  public:
    string GetName() {
        return _name;
    }
    void SetName(string name) {
        _name = name;
    }
  private:
    string _name;
};
class Dog : public Animal {
  public:
    void Bark();
};
Dog myDog;
myDog.SetName("Wangwang");
cout << myDog.GetName() << " is a cute dog." << endl;

多型

多型是一種物件導向的概念,可以在執行時確定方法應該如何實現。在C++中,我們可以通過虛擬函式實現多型。在C++中,如果方法被宣告為虛擬函式,那麼派生類可以覆蓋基礎類別中相同名稱的虛擬函式。下面是一個簡單的多型範例。

class Animal {
  public:
    virtual void Speak() {
        cout << "Animal speaking." << endl;
    }
};
class Dog : public
class Animal { public: virtual void Speak() { cout << "Animal speaking." << endl; } };
class Dog : public Animal { public: void Speak() { cout << "Dog barking." << endl; } };
class Cat : public Animal { public: void Speak() { cout << "Cat meowing." << endl; } };
Animal* animal;
Dog myDog; Cat myCat;
animal = &myDog; animal->Speak(); // 輸出 "Dog barking."
animal = &myCat; animal->Speak(); // 輸出 "Cat meowing."

成員變數與成員方法

成員變數指的是在類中定義的屬性,成員方法指的是在類中定義的方法或函數。在C++中,我們可以通過物件來存取成員變數和成員方法。下面是一個簡單的成員變數和成員方法範例。

class Rectangle {
  public:
    int width, height;
    int GetArea() {
        return width * height;
    }
};
Rectangle myRect;
myRect.width = 10;
myRect.height = 20;
cout << "Area: " << myRect.GetArea() << endl;

總結

C++的類別和物件是物件導向程式設計的重要內容,具有實現程式碼重用、抽象、封裝、繼承和多型等優點。通過一個簡單的類定義範例,我們瞭解了C++中的類定義、物件建立、建構函式和解構函式、存取修飾符、繼承和多型等知識點,並提供了相應的程式碼範例,供讀者參考。在實際程式設計過程中,我們應該根據需求靈活運用這些知識點,完成高效、優雅、易維護的程式碼編寫。

以上就是C++類別與物件及建構函式解構函式基礎詳解的詳細內容,更多關於C++類別物件構造解構函式的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com