C++ 0513 向量和数组(二)

对const向量重载运算符

void f(const vector& cv)
{
    double d=cv[1]; //错误,但本应是正确的
    cv[1]=2.0; //错误(本该如此)
}
其原因在于我们的vector::operator[]()可能会潜在地改变vector对象。即使它实际上没有改变
,编译器仍会认为这是一个错误,因为我们忘了将这一情况告诉编译器。
解决方案是再定义一个const成员函数。

class vector
{
    //...
    double& operator[](int n); //用于非const的vector
    double operator[](int n) const; //用于const vector
};


数组

现在,你可能会发觉我们明显更倾向于使用vector而不是数组。
如果可以选择应尽可能使用std::vector。

指向数组元素的指针

vector x(100);
vector y(100);

//...
x = y; //拷贝100个int

数组初始化

char ac[] = "Beorn"; //6个字符的数组
注意:数值为0的char不是字符‘0’或者其他的任何字母或数字。
这种结尾0的目的在于帮助函数定位字符串的结束

int strlen(const char* p)
{
    int n = 0;
    while(p[n]) ++n;
    return n;
}


 

你可能感兴趣的:(C++)