8.14. Membuat Class String Sendiri
Class string pada bahasa C++ secara otomatis menangani banyak tugas-tugas yang terlibat dalam penggunaan string, seperti alokasi memori dinamis dan memeriksa margin dan lain sebagainya. Ia juga merupakann operator overload seperti + dan =, dan juga memiliki banyak anggota fungsi yang memudahkan dalam bekerja dengan string. Dalam beberapa bagian, kita harus membuat sebuah data tipe string dengan banyak kelas fungsi C++. Dalam proses, kita lihat misalnya pada contoh copy constructor keberatan dan operator penuh aksi, serta contoh-contoh teknik pemrograman yang berguna sebagai solusi dari berbaai masalah. Kelas MyString yang ditetapkan dalam bagian ini adalah jenis data abstrak untuk menangani string. Memiliki banyak keunggulan yang dimiliki oleh kelas C++ string yang diberikan oleh Standard Template Library: Memori yang dteralokasi secara dinamis untuk setiap string yang tersimpan dalam MyString objek. Programmer yang menggunakan kelas ini tidak perlu khawatir dengan seberapa besar untuk membuat array. Strings mungkin akan ditugaskan ke objek dengan MyString = operator. Programmer yang menggunakan kelas ini tidak perlu memanggil fungsi strcpy. Satu string mungkin concatenated lain dengan + = operator. Ini menghilangkan kebutuhan untuk fungsi strcat. Strings mungkin akan diuji untuk kesetaraan dengan == operator. Programmer yang menggunakan kelas ini tidak perlu memanggil fungsi strcmp. Pada sebuah Kelas MyString memiliki pointer sebagai anggota dan secara dinamis mengalokasikan memori untuk menyimpan nilai string, konstruksi salinan disediakan. Fungsi ini akan menyebabkan objek diatur dengan benar datanya ketika diinisialisasi dengan obyek MyString lain. Kelas MyString memiliki 2 overloaded = operator. Yang pertama adalah untuk menempatkan satu MyString ke objek lain. fungsi Operator ini dipanggil ketika operand di sebelah kanan dari tanda = adalah MyString objek, seperti yang terlihat pada segmen kode berikut: MyStringfirst("Hello"),second; second=first; Kedua versi MyString = dari operator untuk menempatkan tradisional string ke MyString objek. Operator fungsi ini dipanggil ketika operand di kanan = adalah sebuah string konstan atau pointer ke sebuah string (seperti nama sebuah char array). Hal ini ditunjukkan pada segmen program berikut: MyStringname; charwho[]="Jimmy"; name=who; Operator + = dirancang untuk menggabungkan string pada MyString kanan ke kiri pada objek. Seperti operator =, MyString memiliki dua versi =. + Versi pertama ini dirancang untuk bekerja pada saat yang tepat operand adalah MyString obyek lain, seperti yang ditunjukkan dalam program ini segmen: MyStringfirst("Hello"),second("world"); first+=second; Kedua versi dari operator + = akan dipanggil ketika operand sebelah kanan adalah string literal atau pointer ke karakter : MyStringfirst("Hello"); first+="World"; Objek MyString yang memiliki kelebihan beban versi dari operator == untuk melakukan ujian kesetaraan. Seperti operator lainnya, versi yang pertama dirancang untuk bekerja dengan objek MyString lainnya dan yang kedua dirancang untuk bekerja dengan string C++ konvensional. == Fungsi akan kembali jika string berada di sebelah kanan operand sesuai dengan anggota str panggilan objek. Jika kedua operands string tidak cocok, fungsi return false. fungsi Operator ini memungkinkan programmer menggunakan kelas ini untuk membangun penghubung ekspresi seperti ini: MyStringname1("Supra"), name2("Supra"); if(name1==name2) cout<<"namaadalahsama.\n"; else cout<<"namaadalahberbeda\n"; MyStringname1("Suprapto"); if(name1=="Supra") cout<<"namaadalahsama.\n"; else cout<<"namaadalahberbeda.\n"; Objek MyString memiliki dua versi yan berkelebihan beban > lebih besar daripada operator untuk melakukan tes, dan < operator untuk melakukan kurang dari tes. Versi pertama dari masing-masing dirancang untuk bekerja dengan objek lain MyString dan yang kedua ini dirancang untuk bekerja dengan C + + tradisional string. (fungsi perpustakaan menggunakan fungsi strcmp untuk menentukan apakah sebuah
Next read ON halaman 18.