Bagaimana cara membebani operator ++ dengan dua cara berbeda untuk postfix a++
dan prefix ++a
?
c++
operator-overloading
calon
sumber
sumber
Jawaban:
Akan terlihat seperti ini:
sumber
Number operator++ (int)
mengambilint
sebagai parameter meskipun Anda tidak menggunakannya?++x
adalah prefiks dan dengan demikian memanggiloperator++()
whilex++
adalah postfix dan dengan demikian memanggiloperator++(int)
Perbedaannya terletak pada tanda tangan yang Anda pilih untuk kelebihan beban Anda
operator ++
.Dikutip dari artikel yang relevan tentang subjek ini di C ++ FAQ (buka sana untuk lebih jelasnya):
PS: Ketika saya mengetahui tentang ini, yang saya lihat awalnya hanyalah parameter dummy, tetapi tipe pengembalian yang berbeda sebenarnya lebih menarik; mereka mungkin menjelaskan mengapa
++x
dianggap lebih efisien daripadax++
secara umum .sumber
Anda memiliki dua cara untuk membebani dua operator (prefix / postfix) ++ untuk tipe T:
Metode objek:
Ini adalah cara termudah, menggunakan idiom OOP "umum".
Objek fungsi non-anggota:
Ini adalah cara lain untuk melakukannya: Selama fungsi berada di namespace yang sama dengan objek yang dirujuknya juga, fungsi tersebut akan dipertimbangkan saat kompilator akan mencari fonction untuk ditangani
++t ;
ataut++ ;
dikodekan:Penting untuk diingat bahwa, dari sudut pandang C ++ (termasuk sudut pandang compiler C ++), fungsi-fungsi non-anggota tersebut masih merupakan bagian dari antarmuka T (selama mereka berada di namespace yang sama).
Ada dua keuntungan potensial dari notasi fungsi non-anggota:
sumber
Nyatakan seperti ini:
Implementasikan dengan benar - jangan mengacaukan apa yang semua orang tahu bahwa mereka lakukan (kenaikan lalu gunakan, gunakan lalu selisih).
sumber
Saya tahu ini terlambat, tetapi saya memiliki masalah yang sama dan menemukan solusi yang lebih sederhana. Jangan salah paham, ini adalah solusi yang sama dengan yang teratas (diposting oleh Martin York). Ini hanya sedikit lebih sederhana. Hanya sedikit. Ini dia:
Solusi di atas sedikit lebih sederhana karena tidak menggunakan objek sementara dalam metode postfix.
sumber