C++深度解析 数组操作符的重载 --- 数组访问操作符[ ],(33)
C++深度解析 数组操作符的重载(33) 通过数组访问操作符,访问单个字符。 示例程序:#include #include using namespace std; int main() { string s = "a1b2c3d4e"; int n = 0; for (int i = 0; i < s.length(); i++) { //判断字符是否为数字 if (isdigit(s[i])) { n++; } } cout << n << endl; return 0; } 结果如下: 类的对象怎么支持数组的下表访问。 数组访问操作符和任意类对象共同使用。 数组访问操作符数组访问符的原生意义是数组访问和指针运算。 a[n] ?<<==>> ?*(a+n) ?<<==>> ?*(n+a) ?<<==>>n[a] 示例程序:(指针与数组的复习)#include #include using namespace std; int main() { int a[5] = {0}; for(int i = 0; i < 5; i++) { a[i] = i; } for(int i = 0; i < 5; i++) { cout << *(a + i) << endl; // 等价于:cout << a[i] << endl } cout << endl; for(int i = 0; i < 5; i++) { //a[i] = i + 10; i[a] = i + 10; // 等价于:*(i + a) ==> *(a + i) ==> a[i] } for(int i = 0; i < 5; i++) { cout << *(i + a) << endl; //等价于:cout << a[i] << endl; } return 0; } 结果如下: 分析:数组访问操作符[ ],原生的意义是访问数组的某个元素,深层次的含义就是计算地址的偏移量。 重载数组访问操作符数组访问操作符([ ]) 示例程序:(重载数组访问操作符)#include #include using namespace std; class Test { int a[5]; public: int& operator [] (int i) { return a[i]; } int& operator [] (const string& s) { if (s == "1st") { return a[0]; } else if(s == "2nd") { return a[1]; } else if(s == "3th") { return a[2]; } else if(s == "4th") { return a[3]; } else if(s == "5th") { return a[4]; } return a[0]; } int length() { return 5; } }; int main() { Test t; for (int i = 0; i < t.length(); i++) { t[i] = i; } for (int i = 0; i < t.length(); i++) { cout << t[i] << endl; } cout << t["5th"] << endl; cout << t["4th"] << endl; cout << t["3th"] << endl; cout << t["2nd"] << endl; cout << t["1st"] << endl; return 0; } 结果如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |