對象(Object)是一個概念,它表示“某個類的一個成員”,是“邏輯上的個體”。
實例(Instance)是一個現實,指的是在內存中真正分配了空間的對象。
實例一定是對象,但對象不一定是實例。
例子1:
#include <iostream>class Person { //這個是一個類
public:std::string name;int age;
};int main() {// 定義一個指針,但沒有實例化Person* p; // p 是 "Person 類型的對象" 概念,但沒有創建實例// 此時 p 沒有指向任何內存,沒有真正的實例// 如果訪問 p->age 會出錯// 創建一個實例p = new Person();p->name = "Sherry";p->age = 26;std::cout << p->name << " " << p->age << std::endl;delete p;return 0;
}
例子2:
class Animal { //這個是個抽象類
public:virtual void sound() = 0; // 純虛函數
};class Dog : public Animal {
public:void sound() override {std::cout << "汪汪" << std::endl;}
};int main() {Animal* a; // 這是一個 Animal 對象的聲明//聲明了一個指針變量a,類型是Animal*,表示這個對象可以指向一個Animal類型的對象// Animal b; // 錯誤:抽象類不能創建實例Dog d; // Dog 是 Animal 的子類,可以創建實例a = &d; // a 指向 d 的實例a->sound(); // 輸出: 汪汪return 0;
}
對象是概念,實例是現實。