Method takes objects by pointer, if it is intended that the method will take over ownership of the object or keep a reference to it after control is returned to the caller. In most of other cases objects are passed as mutable or constant reference. E.g.
void InsertProject( wxMPProject* pProject ); // takes ownership of the given isntance void AddListener( wxPMWorkpalceListener* pLsn ); // keeps references to listeners bool SaveProject( const wxPMFileInfo& location ); // obj only used whithin this methodAlso, a tricky case is when passing an object to a method, where the object is not owned by caller or even not by callee, but is being used by multiple participants. To indicate such "sharing", the object is passed by pointer, eg.
bool wxPMBootstrapService::StopService( wxPMService* pSvc );where the pSvc is already owned by bootstrap object, in this particular call ownership is not taken nor any references kept, it just alters the state of shared-object.