Aracılığıyla paylaş


Bağımsız değişkenler olmadan kendi Manipulators yazmak

Bağımsız değişkenleri kullanmayın manipulators yazma Sınıf türetme kendisi karmaşık makro kullanımını gerektirir.Yazıcınız [kalın moduna girmek için. <ESC> çifti gerektirir varsayalımBu çiftin akımına doğrudan ekleyebilirsiniz:

cout << "regular " << '\033' << '[' << "boldface" << endl;

Veya tanımlayabilirsiniz bold karakter ekler manipulator:

ostream& bold( ostream& os ) {
    return os << '\033' << '[';
}
cout << "regular " << bold << "boldface" << endl;

Genel olarak tanımlanan bold işlev alır bir ostream başvuru bağımsız değişkeni ve iade ostream başvuru.Herhangi bir özel sınıf öğelerine erişim gerekmediğinden, üye işlevi veya bir arkadaşınız değildir.bold İşlevi, çünkü akışa bağlanır stream nesnesinin << işleci aşırı bu tür bir işlevi, kabul etmek için aþaðýdakine benzer bir bildirimi kullanarak:

_Myt& operator<<(ios_base& (__cdecl *_Pfn)(ios_base&))
{   
   // call ios_base manipulator
   (*_Pfn)(*(ios_base *)this);
   return (*this);
}

Diğer aþýrý yüklenmiþ Ýþleçler genişletmek için bu özelliği kullanabilirsiniz.Bu durumda arızi olduğu, bold akımına karakterleri ekler.Bitişik karakterin yazdırıldığında, akımına şart değil eklendiğinde, işlevi çağrılır.Böylece, yazdırma akışın arabelleğe alma nedeniyle gecikmesi.

Ayrıca bkz.

Başvuru

Çıkış akımları