Rumah >pembangunan bahagian belakang >C++ >Bolehkah Anda Membuat `
Pemuatan Terlebih Operator Maya: Membuat << Maya
Percubaan untuk mengisytiharkan << operator mengakibatkan ralat pengkompil kerana sifat fungsi bebas. Untuk mengatasi pengehadan ini dan membolehkan tingkah laku maya untuk beban operator tersuai, pendekatan alternatif diperlukan.
Mentransformasikan Operator kepada Fungsi Ahli
Kunci untuk memperkenalkan tingkah laku maya terletak pada menukar << operator daripada fungsi bebas kepada fungsi ahli kelas. Walau bagaimanapun, berbuat demikian secara langsung akan membalikkan tertib parameter, mengakibatkan peletakan operan yang salah.
Memperkenalkan Indirection: The Print() Function
Untuk menyelesaikan isu ini, Fundamental Teorem Kejuruteraan Perisian mencadangkan penambahan lapisan perantaraan amaran. Daripada membuat << maya, fungsi print() maya ditambahkan pada kelas:
<code class="cpp">class MyClass { public: virtual void print(ostream& where) const; };</code>
Mengubah hala << untuk mencetak()
<< fungsi percuma kemudiannya ditakrifkan semula untuk mewakilkan gelagatnya untuk mencetak():
<code class="cpp">ostream& operator<<(ostream& out, const MyClass& mc) { mc.print(out); return out; }</code>
Mencapai Gelagat Maya
Dengan persediaan ini, << operator mengekalkan susunan parameter yang betul sambil membenarkan subkelas mengatasi kaedah print() dan menyesuaikan tingkah laku keluarannya. Ini secara berkesan membolehkan tingkah laku maya untuk << operator, membenarkan polimorfisme dinamik dalam penstriman output.
Atas ialah kandungan terperinci Bolehkah Anda Membuat `. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!