Допустим, у нас есть объект, созданный статически (Type mObject;
), который подвергается программисту с помощью метода getObject(). Интересно, каковы преимущества и недостатки в получении объекта такими способами?Получение объекта с указателем и ссылкой
Type* SomeClass::getObject() {
return &mObject;
}
// the programmer types
Type* obj = someClassObj.getObject();
obj->someMethod();
и таким образом:
Type& SomeClass::getObject() {
return mObject;
}
// the programmer types
Type& obj = someClassObj.getObject();
obj.someMethod();
Бывший API почти поощряет программиста к вызову 'delete', когда он сделан с объектом, или, по крайней мере, оставляет его задающимся вопросом, как очистить. –
В первом случае вам придется документировать, кому принадлежит возвращенный указатель, и надеемся, что клиенты прочитают документы. Обратите внимание, что оба имеют проблемы с константой. – juanchopanza
В первом случае вы можете вернуть NULL, поэтому вызывающему нужно проверить это. – spiritwolfform