关于valarray的问题?
#ifndef STUDENTC_H_
#define STUDENTC_H_
#include <iostream>
#include <string>
#include <valarray>
class Student
{
private:
typedef std::valarray<double> ArrayDb;
std::string name;
ArrayDb scores;
std::ostream & arr_out(std::ostream & os) const;
public:
Student():name("Null Student"),scores() {}
Student(const std::string & s)
:name(s),scores(){}
explicit Student(int n):name("Nully"),scores(n){}
Student(const std::string & s,int n)
:name(s),scores(n){}
Student(const std::string & s,const ArrayDb & a)
:name(s),scores(a){}
Student(const char * str,const double * pd,int n)
:name(str),scores(pd,n){}
~Student(){}
double Average() const;
const std::string & Name() const;
double & operator[](int i);
double operator[](int i) const;
friend std::istream & operator>>(std::istream & is,
Student & stu);
friend std::istream & getline(std::istream & is,
Student & stu);
friend std::ostream & operator<<(std::ostream & os,
const Student & stu);
};
#endif
以上是Student类,其中的两个函数定义:
double & Student::operator[](int i)
{
return scores[i]; //use vallarray<double>::operator[]()
}
double Student::operator[](int i) const
{
return scores[i];
}
这两个函数有点不,明白第一个函数为什么多个引用操作符,第二个函数为什么多个const限定符?请大牛指点迷津!