Funções não-membro não-membro vs funções privadas

Herb Sutter disse que a maneira mais orientada a objetos para escrever métodos em C ++ é usando funções não-membro não-membro. Isso significa que eu deveria usar métodos privados e transformá-los em funções que não sejam de um não-membro? Qualquer variável de membro que esses métodos possam precisar pode ser passada como parâmetros.

Exemplo (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>

Exemplo (depois):

<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>

Estou no caminho certo? Todos os métodos privados devem ser movidos para funções não pertencentes a não-membros? Quais deveriam ser as regras que diriam o contrário?

questionAnswers(4)

yourAnswerToTheQuestion