Subskripsi
Operator subskrip ([ ]), seperti operator panggilan fungsi, dianggap sebagai operator biner. Operator subskrip harus merupakan fungsi anggota nonstatis yang mengambil satu argumen. Argumen ini bisa dari jenis apa pun dan menunjuk subskrip array yang diinginkan.
Contoh
Contoh berikut menunjukkan cara membuat vektor jenis int
yang menerapkan pemeriksaan batas:
// subscripting.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class IntVector {
public:
IntVector( int cElements );
~IntVector() { delete [] _iElements; }
int& operator[](int nSubscript);
private:
int *_iElements;
int _iUpperBound;
};
// Construct an IntVector.
IntVector::IntVector( int cElements ) {
_iElements = new int[cElements];
_iUpperBound = cElements;
}
// Subscript operator for IntVector.
int& IntVector::operator[](int nSubscript) {
static int iErr = -1;
if( nSubscript >= 0 && nSubscript < _iUpperBound )
return _iElements[nSubscript];
else {
clog << "Array bounds violation." << endl;
return iErr;
}
}
// Test the IntVector class.
int main() {
IntVector v( 10 );
int i;
for( i = 0; i <= 10; ++i )
v[i] = i;
v[3] = v[9];
for ( i = 0; i <= 10; ++i )
cout << "Element: [" << i << "] = " << v[i] << endl;
}
Array bounds violation.
Element: [0] = 0
Element: [1] = 1
Element: [2] = 2
Element: [3] = 9
Element: [4] = 4
Element: [5] = 5
Element: [6] = 6
Element: [7] = 7
Element: [8] = 8
Element: [9] = 9
Array bounds violation.
Element: [10] = 10
Komentar
Ketika i
mencapai 10 dalam program sebelumnya, operator[] mendeteksi bahwa subskrip di luar batas sedang digunakan dan mengeluarkan pesan kesalahan.
Perhatikan bahwa operator fungsi [] mengembalikan jenis referensi. Ini menyebabkannya menjadi nilai l, memungkinkan Anda menggunakan ekspresi subskrip di kedua sisi 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