对象(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;
}
对象是概念,实例是现实。