Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk membebankan

Bagaimana untuk membebankan

Linda Hamilton
Lepaskan: 2024-12-08 05:54:10
asal
236 orang telah melayarinya

How to Overload the

Operator Lebih Muatan<< untuk Mengendalikan std::endl

Apabila melebihkan operator sisipan strim (operator<<), isu biasa timbul apabila cuba memasukkan std::endl sebagai hujah sisipan. Ralat "ralat C2678: binari '<<' : no operator found" menunjukkan ketidakupayaan sistem untuk mencari operator yang serasi untuk operan kiri, UIStream.

Sebab asas ralat ini ialah std::endl bukan jenis, tetapi fungsi. Untuk mengatasinya, kita mesti memahami cara std::cout mengendalikan std::endl. std::cout melaksanakan operator<< untuk mengambil penunjuk fungsi dengan tandatangan yang sama seperti std::endl. Ia kemudian memanggil fungsi dan memajukan nilai pulangan.

Untuk meniru tingkah laku ini, kami mentakrifkan operator tambahan<< fungsi dalam kelas MyStream kami yang mengambil fungsi dengan tandatangan MyStreamManipulator tersuai. Fungsi ini memanggil fungsi yang ditentukan dan mengembalikan nilai pulangannya.

Untuk mengendalikan std::endl secara khusus, kami mentakrifkan fungsi MyStream::endl statik yang sepadan dengan tandatangan MyStreamManipulator. Dalam fungsi ini, kami mencetak baris baharu dan melakukan sebarang operasi strim tambahan, seperti mengepam penimbal.

Selain itu, kami mentakrifkan operator<< fungsi untuk menerima tandatangan fungsi StandardEndLine yang digunakan oleh std::cout. Fungsi ini memanggil fungsi manip dengan std::cout sebagai hujahnya, membenarkan pemasukan std::endl.

Dengan mengikuti langkah-langkah ini, kami boleh membebankan operator<< dalam kelas MyStream tersuai kami untuk mengendalikan kedua-dua data yang ditentukan pengguna dan sisipan std::endl. Ini membolehkan kami menggunakan MyStream sebagai alternatif serba boleh kepada std::cout dengan kawalan penuh ke atas manipulasi strim.

Atas ialah kandungan terperinci Bagaimana untuk membebankan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan