Passagem de argumentos de CString
Este artigo explica como passar objetos de CString funções e como retornar objetos de CString de funções.
Convenções Argumento- Passando de CString
Quando você define uma interface da classe, você deve determinar a convenção argumento- passando para suas funções de membro.Há algumas regras padrões para passar e retornar objetos de CString .Se você segue as regras descritas em Cadeias de caracteres como entradas de função e em Cadeias de caracteres como saída de função, você terá código eficiente, correto.
Cadeias de caracteres como entradas de função
A maneira mais eficiente e mais segura de usar um objeto de CString em funções chamados é passar um objeto de CString à função.Independentemente de nome, um objeto de CString não armazena uma cadeia de caracteres internamente como se AC - estilize a cadeia de caracteres tem um terminador que zero.Em vez de isso, um objeto de CString mantém a trilha cuidadosa o número de caracteres que tem.Fazendo CString fornecer um ponteiro de LPCTSTR a uma cadeia de caracteres NULL- finalizada é uma pequena quantidade de trabalho que pode se tornar significativa se seu código tem que fazer constantemente.O resultado é temporário porque qualquer alteração nos conteúdos de CString invalida cópias antigos do ponteiro de LPCTSTR .
Faz sentido fornecer em alguns casos a energia AC - estilize a cadeia de caracteres.Por exemplo, pode haver uma situação onde uma função chamada foi escrito em C e não suporta objetos.Em esse caso, forçar o parâmetro de CString a LPCTSTR, e a função terá a energia AC - cadeia de caracteres NULL- finalizada estilo.Você também pode navegar para outra direção e criar um objeto de CString usando o construtor de CString que aceita a energia AC - estilizar o parâmetro de cadeia de caracteres.
Se o conteúdo cadeia de caracteres devem ser modificados por uma função, declare o parâmetro como uma referência não constante CString (CString&).
Cadeias de caracteres como saída de função
Normalmente você pode retornar objetos de CString das funções como os objetos de CString seguem a semântica de valor como tipos primitivos.Para retornar uma cadeia de caracteres somente leitura, use uma referência constante CString (const CString&).O exemplo a seguir ilustra o uso de parâmetros e tipos de retorno de CString :
class CName : public CObject
{
private:
CString m_firstName;
TCHAR m_middleInit;
CString m_lastName;
public:
CName() {}
void SetData(LPCTSTR fn, const TCHAR mi, LPCTSTR ln)
{
m_firstName = fn;
m_middleInit = mi;
m_lastName = ln;
}
void GetData(CString& cfn, TCHAR& mi, CString& cln)
{
cfn = m_firstName;
mi = m_middleInit;
cln = m_lastName;
}
CString GetLastName()
{
return m_lastName;
}
};
CName name;
CString last, first;
TCHAR middle;
name.SetData(_T("John"), 'Q', _T("Public"));
ASSERT(name.GetLastName() == _T("Public"));
name.GetData(first, middle, last);
ASSERT((first == _T("John")) && (last == _T("Public")));