码迷,mamicode.com
首页 > 编程语言 > 详细

第34课 数组操作符的重载

时间:2016-04-21 13:39:23      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:

1. 字符串类的兼容性

(1)string类最大限度的考虑了C字符串的兼容性

(2)可以按照使用C字符串的方式使用string对象,如

string s = "abcedefg";
char c = s[i];

【编程实验】用C方式使用string类

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s = "a1b2c3d4e";
    int n = 0;
    
    for(int i=0; i<s.length(); i++)
    {
        if(isdigit(s[i])) //通过C字符串方式使用string对象(即数组)
        {
            n++;
        }
    }
    
    cout << n << endl; //4

    return 0;
}

2. 类的对象如何支持数组的下标访问

(1)数组访问是C/C++中的内置操作符

(2)数组访问符的原生意义数组访问指针运算

       a[n] ←→  *(a + n)  ←→  *(n + a)  ←→ n[a]

【实例分析】指针和数组的复习

#include <iostream>
#include <string>

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++)
    {
        i[a] = i + 10; //a[i] = i + 10;
    }
    
    for (int i=0; i<5; i++)
    {
        cout << *(i + a) << endl; //cout<< a[i] << endl;
    }

    return 0;
}

3. 重载数组访问的操作符:[]

(1)只能通过类的成员函数重载

(2)重载函数能且仅能使用一个参数

(3)可以定义不同参数的多个重载函数

(4)可以隐藏对指针的操作

【编程实验】重载数组访问操作符

 

【编程实验】数组类的完善

 

4. 小结

(1)string类最大程序的兼容了C字符串的用法

(2)数组访问符的重载能够使得对象模拟数组的行为

(3)只能通过类的成员函数重载数组访问符

(4)重载函数能且仅能使用一个参数

第34课 数组操作符的重载

标签:

原文地址:http://www.cnblogs.com/5iedu/p/5416500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!