2010-08-19 4 views
1

Можно создать дубликат:
How to prevent an object being created on the heap?Что такое класс на основе стека?

Привет,

Я слышал концепцию под названием как класс на основе стека. То есть мы не можем создать экземпляр класса с помощью new.

Я слышу это впервые. Один из способов реализовать это путем частной перегрузки «нового» оператора.

Если кто-нибудь знает подробности о классе на основе стека, пожалуйста, сообщите мне.

ответ

0

Вместо перегрузки нового оператора следуйте рисунку Factory.

  • Статический метод создания новых экземпляров этого класса.
  • Метод доступа, чтобы получить последний экземпляр (от вершины стека)
+0

Я много слышал об использовании заводов вместо перегрузки «нового» недавно ... почему это? – xitrium

+0

'' Метод доступа для получения последнего экземпляра (из верхней части стека) '' ---- ??? Не могли бы вы объяснить это более подробно? – IanH

2

Это все в конкретизации:

AnotherClass::SomeMethod(...) { 
    MyClass stackBased; 
    MyClass *heapBased; 

    *heapBased = new MyClass(); 
    *heapBased->DoSomething(); 
    delete heapBased; 

    stackBased.DoSomething(); 

    ... 
} 

stackbased класс автоматически выделяется, реализованным и высвобождены в стеке , тогда как вам нужно сделать все это самостоятельно для кучи.

+0

Это не вопрос. Вопрос в том, как бы вы прекратили компиляцию фрагмента кода? Что вы делаете с MyClass, так что «мы не можем создать экземпляр класса, используя новый» (чтобы процитировать вопрос выше). –

+0

Извините, непонятый вопрос. Но в этом случае этот вопрос является возможным дубликатом, как отметил KennyTM. –