Aracılığıyla paylaş


CString Bağımsız Değişken Geçirme

Bu makalede, nesneleri işlevlere geçirme CString ve işlevlerden nesne döndürme CString açıklanmaktadır.

CString Bağımsız Değişken Geçirme Kuralları

Bir sınıf arabirimi tanımlarken, üye işlevleriniz için bağımsız değişken geçirme kuralını belirlemeniz gerekir. Nesneleri geçirmek ve döndürmek CString için bazı standart kurallar vardır. Dizeler'de İşlev Girişleri ve Dizeler olarak İşlev Çıkışları olarak açıklanan kurallara uyarsanız, verimli ve doğru koda sahip olursunuz.

İşlev Girişi Olarak Dizeler

İşlevler olarak adlandırılan içinde bir CString nesneyi kullanmanın en verimli ve güvenli yolu, bir CString nesneyi işleve geçirmektir. Ada rağmen, bir CString nesne bir dizeyi dahili olarak sonlandırıcısı olan C stili bir NULL dize olarak depolamaz. Bunun yerine, bir CString nesne sahip olduğu karakter sayısını dikkatli bir şekilde izler. CString Sonlandırılan bir NULLdizeye işaretçi sağlamakLPCTSTR, kodunuzun bunu sürekli yapması gerekiyorsa önemli hale gelebilen küçük bir iş miktarıdır. İçerikte yapılan herhangi bir değişiklik işaretçinin CString eski kopyalarını LPCTSTR geçersiz kacağından sonuç geçicidir.

Bazı durumlarda C stili bir dize sağlamak mantıklıdır. Örneğin, çağrılan bir işlevin C dilinde yazıldığı ve nesneleri desteklemediği bir durum olabilir. Bu durumda parametresini CString olarak LPCTSTRzorlamak ve işlevi C stilinde NULLsonlandırılan bir dize alır. Ayrıca, C stili dize CString parametresini kabul eden oluşturucuyu CString kullanarak diğer yöne gidebilir ve bir nesne oluşturabilirsiniz.

Dize içeriği bir işlev tarafından değiştirilecekse, parametreyi tutarsız CString başvuru (CString& ) olarak bildirin.

İşlev Çıkışları Olarak Dizeler

Nesneler ilkel türler gibi değer semantiğini izlediğinden genellikle işlevlerden CString nesne döndürebilirsinizCString. Salt okunur bir dize döndürmek için sabit CString başvuru (const CString&) kullanın. Aşağıdaki örnekte parametrelerin ve dönüş türlerinin CString kullanımı gösterilmektedir:

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")));

Ayrıca bkz.

Dizeler (ATL/MFC)