Penetapan
Operator penugasan (=) adalah, secara ketat, operator biner. Deklarasinya identik dengan operator biner lainnya, dengan pengecualian berikut:
- Ini harus menjadi fungsi anggota nonstatis. Tidak ada operator= yang dapat dinyatakan sebagai fungsi nonmember.
- Ini tidak diwariskan oleh kelas turunan.
- Operator default = fungsi dapat dihasilkan oleh pengkompilasi untuk jenis kelas, jika tidak ada.
Contoh berikut mengilustrasikan cara mendeklarasikan operator penugasan:
class Point
{
public:
int _x, _y;
// Right side of copy assignment is the argument.
Point& operator=(const Point&);
};
// Define copy assignment operator.
Point& Point::operator=(const Point& otherPoint)
{
_x = otherPoint._x;
_y = otherPoint._y;
// Assignment operator returns left side of assignment.
return *this;
}
int main()
{
Point pt1, pt2;
pt1 = pt2;
}
Argumen yang disediakan adalah sisi kanan ekspresi. Operator mengembalikan objek untuk mempertahankan perilaku operator penugasan, yang mengembalikan nilai sisi kiri setelah penugasan selesai. Hal ini memungkinkan penautan penugasan, seperti:
pt1 = pt2 = pt3;
Operator penugasan salinan tidak akan dikacaukan dengan konstruktor salinan. Yang terakhir dipanggil selama pembangunan objek baru dari yang sudah ada:
// Copy constructor is called--not overloaded copy assignment operator!
Point pt3 = pt1;
// The previous initialization is similar to the following:
Point pt4(pt1); // Copy constructor call.
Catatan
Dianjurkan untuk mengikuti aturan tiga kelas yang menentukan operator penugasan salinan juga harus secara eksplisit menentukan konstruktor salinan, destruktor, dan, dimulai dengan C++11, memindahkan konstruktor dan memindahkan operator penugasan.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk