sz[x];
解釋為:
sz.operator[](x);
一般情況下, 下標運算符的重載函數原型如下:
返回類行& operator[ ] (參數類行)
下標運算符的重載函數只能有一個參數, 不過該參數沒有類型限制, 如果類中並未重載下標運算符, 編譯器將提供預設定義, 此時參數必需是int 型, 並且要聲明為數組名才能使用下標變量.
Ps. 返回的類型使得返回值可以為左值.
==================範例代碼 CharSZ911.h:====================
- #include "main.h"
- class CharSZ911{
- int Len;
- char* pBuf;
- public:
- CharSZ911(int l){
- Len = l;
- pBuf = new char[Len];
- }
- ~CharSZ911(){
- delete[] pBuf;
- }
- int getLen(){
- return Len;
- }
- char& operator [](int i);
- };
===================範例代碼 CharSZ911.cpp:===================
- #include "CharSZ911.h"
- char& CharSZ911::operator [](int i){
- static char def = '\0';
- if(i
- return pBuf[i];
- }else{
- cout << "下標越界!" << endl;
- return def;
- }
- }
===================範例代碼 example_ch9.cpp:===================
- ...
- void example911(){
- int cnt = 0 ;
- CharSZ911 de(7);
- char* sz = "Helloo";
- for(;cnt < (strlen(sz)+1);cnt++){
- de[cnt] = sz[cnt];
- }
- for(cnt=0; cnt
- cout << cnt << ".("<< de[cnt] << ") ";
- }
- cout << endl;
- }
- ...
結果:
0.(H) 1.(e) 2.(l) 3.(l) 4.(o) 5.(o) 6.( )
Ps. 重載[] 後便可以對普通CharSZ911對像進行[]運算
沒有留言:
張貼留言