#include #include #include class Vector { public: Vector(std::size_t dim); ~Vector(); double &operator()(std::size_t index); double operator()(std::size_t index) const; double *data; std::size_t dim; }; Vector::Vector(std::size_t dim) : data(new double[dim]), dim(dim) { } Vector::~Vector() { delete [] data; } double & Vector::operator()(std::size_t index) { assert(index < dim); return data[index]; } double Vector::operator()(std::size_t index) const { assert(index < dim); return data[index]; } void print(const Vector &x) { for (size_t i = 0; i < x.dim; ++i) { std::printf("%lf", x(i)); if (i + 1 < x.dim) { std::printf(", "); } } } int main(void) { Vector x(4); for (std::size_t i = 0; i < x.dim; ++i) { x(i) = 42 + i; } print(x); printf("\n"); }