Funciones no-no-miembros no-miembros vs funciones privadas

Herb Sutter ha dicho que la forma más orientada a objetos de escribir métodos en C ++ es usar funciones que no sean miembros que no sean amigos. ¿Debería eso significar que debo tomar métodos privados y convertirlos en funciones que no sean miembros no amigos? Cualquier variable miembro que estos métodos puedan necesitar puede pasarse como parámetros.

Ejemplo (antes):

<code>class Number {
 public:
  Number( int nNumber ) : m_nNumber( nNumber ) {}
  int CalculateDifference( int nNumber ) { return minus( nNumber ); }
 private:
  int minus( int nNumber ) { return m_nNumber - nNumber; }
  int m_nNumber;
};
</code>

Ejemplo (después):

<code>int minus( int nLhsNumber, int nRhsNumber ) { return nLhsNumber - nRhsNumber; }
class Number {
 public:
  Number( int nNumber ) : m_nNumber( nNumber ) {}
  int CalculateDifference( int nNumber ) { return minus( m_nNumber, nNumber ); }
 private:
  int m_nNumber;
};
</code>

¿Estoy en el camino correcto? ¿Deberían trasladarse todos los métodos privados a funciones que no sean miembros que no sean amigos? ¿Cuáles deberían ser las reglas que te dirían lo contrario?

Respuestas a la pregunta(4)

Su respuesta a la pregunta