Yes, your understanding is correct. In object-oriented programming (OOP), a class is a blueprint or template for defining objects.
A class can contain data members (also called properties or fields) and member functions (also called methods).
When we use this class to create its instance, we get an object. Each object is a specific instance of a class.
It has all the data members and member functions defined in the class, but the data members of each object can have different values, thereby representing different data states.
Simply put, a class is an abstract concept that defines the structure of an object (that is, what properties and methods an object has), while an object is a specific implementation of this structure, which contains actual data and operations that can be performed.
For example, if we have a class called `Car`, which defines the properties of a car (such as brand, model, color, etc.) and the operations that can be performed (such as start, stop, accelerate, etc.).
Then, when we use the `Car` class to create several different objects, each object will be a specific car instance.
They may have different brands, models, and colors, but they can all perform the same operations such as start and stop. These specific car instances are objects of the `Car` class.