/*****************************************************************
Name : 重載下標符號 const 函式
Date : 2017/02/20
By : CharlotteHonG
Final: 2017/02/20
*****************************************************************/
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
class Arr{
public:
// 建構子
Arr(int len): arr(len){
iota(arr.begin(),arr.end(),1);
}
// 重載下標符號
int & operator[](size_t idx){
return arr[idx];
}
const int & operator[](size_t idx) const{
cout << "**Const**" << endl;
return arr[idx];
}
private:
vector<int> arr;
};
void pri(const int & num){
cout << "num=" << num << endl;
}
int main(){
Arr a(5);
pri(a[0]);
return 0;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCk5hbWUgOiDph43ovInkuIvmqJnnrKbomZ8gY29uc3Qg5Ye95byPCkRhdGUgOiAyMDE3LzAyLzIwCkJ5ICAgOiBDaGFybG90dGVIb25HCkZpbmFsOiAyMDE3LzAyLzIwCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxudW1lcmljPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEFycnsKcHVibGljOgogICAgLy8g5bu65qeL5a2QCiAgICBBcnIoaW50IGxlbik6IGFycihsZW4pewogICAgICAgIGlvdGEoYXJyLmJlZ2luKCksYXJyLmVuZCgpLDEpOwogICAgfQogICAgLy8g6YeN6LyJ5LiL5qiZ56ym6JmfCiAgICBpbnQgJiBvcGVyYXRvcltdKHNpemVfdCBpZHgpewogICAgICAgIHJldHVybiBhcnJbaWR4XTsKICAgIH0KICAgIGNvbnN0IGludCAmIG9wZXJhdG9yW10oc2l6ZV90IGlkeCkgY29uc3R7CiAgICAgICAgY291dCA8PCAiKipDb25zdCoqIiA8PCBlbmRsOwogICAgICAgIHJldHVybiBhcnJbaWR4XTsKICAgIH0KcHJpdmF0ZToKICAgIHZlY3RvcjxpbnQ+IGFycjsKfTsKCnZvaWQgcHJpKGNvbnN0IGludCAmIG51bSl7CiAgICBjb3V0IDw8ICJudW09IiA8PCBudW0gPDwgZW5kbDsKfQppbnQgbWFpbigpewogICAgQXJyIGEoNSk7CiAgICBwcmkoYVswXSk7CiAgICByZXR1cm4gMDsKfQ==