Если мы можем создать экземпляр объекта класса и получить доступ к методам-членам, тогда зачем указатель на класс?
Если у вас есть только базовый класс и нет производных классов, тогда онхорошо создать объект в стеке, а не указатель на класс.В последнем случае вы должны вызывать delete
для указателя, чтобы вернуть ресурсы, полученные new
.(Также убедитесь, что стек никогда не переполняется. Если вам нужно большое количество массивов экземпляров, тогда создание экземпляра с использованием new
- единственный вариант.)
class foo
{
int a ;
};
foo obj1 ;
foo obj2 = obj1 ; // Copy construction. Both obj2, obj1 have it's independent
// copy of objects. (Deep copy)
foo *obj3 = new foo ;
foo *obj4 = obj3 ; // Copy construction. However, both obj3, obj4 point to the
// same object. (Shallow copy)
// You should be careful in this case because deletion of obj3
// makes obj4 dangling and vice versa.
Есть ли в этом какая-то польза?
Полиморфизм , поскольку он работает только для указателей / ссылок.
И когда мы используем указатель на класс и когда мы создаем экземпляробъект этого?
Это зависит от требования.Как было сказано ранее, если у вас есть только базовый класс, создание объекта в стеке - лучший вариант.