2013-04-20 4 views
0

Я хотел бы знать конструкторское решение за использованием указателя или объекта в классе. . под кодомКогда использовать указатели/объекты в дизайне классов

class ABC; 

class Base 
{ 
    private: 
     ABC* m_abcptr; 

     //OR 

     ABC m_abcobj; 
}; 

Если вы можете дать пример с точки зрения приложения, было бы здорово.

+3

Очень сложно ответить на этот вопрос, это зависит от многих разных вещей ... Нам нужно написать книгу для вас, чтобы описать ее :-) – deepmax

+0

@MM Итак, можете ли вы предложить любую книгу для принятия таких проектных решений на C++ , Я бы с удовольствием купила и прочла его. :) – deepdive

+0

У меня нет никаких предложений для книги. Но я хочу получить реальный ответ, лучше сказать, какую проблему вы хотите решить, и почему вы в этом случае можете использовать указатели. Тогда SO может направить вас к правильному пути. – deepmax

ответ

1

Объект типа без указателя будет удален, когда он выходит из области видимости. Это полезно для внутренних членов класса, а также для реализации шаблона RAII.

Объект типа указателя должен быть удален вручную. Используйте объект стиля указателя, когда жизненный цикл объекта не связан с жизненным циклом объекта, которому он принадлежит, или для объектов, которые не принадлежат другому объекту, и будет предоставлен в качестве соавтора для других классов ,

+0

Объект типа без указателя можно легко выделить в куче: 'Base * x = new Base();' - 'm_abcobj' будет находиться в куче. – SomeWittyUsername

+0

К сожалению, я возьму это. , , Как остальная часть ответа является основным ориентиром? Я все еще изучаю C++. –

+0

Отдых в целом правильный, но есть много других соображений, которые могут повлиять на использование побочной стоимости по сравнению с эталонной семантикой. – SomeWittyUsername

Смежные вопросы