class Vector { 
      public: 
       Vector(int s) :elem{new double[s]}, sz{s} { }
       double& operator[](int i) { return elem[i]; } //function 2
       int size() { return sz; } 
        private: 
            double∗ elem;  
            int sz; 
     };
Code snippet from: The C++ Programming Language 4th edition, Bjarne Stroustrup
IDE : Microsoft Visual Studio Professional 2013
Please explain what does the operator keyword do? I tried searching couldn't find anything else apart from operator overloading, which is not my question
double read_and_sum(int s) { 
                    Vector v(s);                     //line 1
                    for (int i=0; i!=v.size(); ++i) 
                    cin>>v[i];                        //line 3
                    double sum = 0; 
                    for (int i=0; i!=v.size(); ++i) 
                    sum+=v[i];
                     return sum;
                    }
Here line1 passes the argument "s" of int type needed by constructor of class vector , that's fine.
But in line3 how can the statement "cin>>v[i]" be valid ? , since the object v isn't declared as an array of objects. Even if it is valid where does the value go..?
 
     
    