I have a topic I\'m confused on that I need some elaborating on. It\'s operator overloading with a const version and a non-const version.
// non-const double
To supply a code example to complement the answer above:
Array a(3); a[0] = 2.0; //non-const version called on non-const 'a' object const Array b(3); double var = b[1]; //const version called on const 'b' object const Array c(3); c[0] = 2.0; //compile error, cannot modify const object