1typedef double Real;
2class Vector {
3    int dimen;
4    Real* val;
5public:
6    Vector& operator=(const Vector& vec);
7    Vector(int p_dimen, Real *p_val)
8	: dimen(p_dimen), val(p_val)    { }
9    int dim() const;
10};
11class DVector : public Vector {
12public:
13    void reDim(int newdim);
14    explicit DVector(const Vector& old);
15    DVector& operator=(const Vector& vec)    {
16	reDim(vec.dim());
17	Vector::operator=(vec);
18    }
19};
20Vector& Vector::operator=(const Vector& vec)
21{
22  dimen = vec.dimen;
23  val = vec.val;
24}
25int Vector::dim() const { return dimen; }
26DVector::DVector(const Vector& old) : Vector(0, 0)
27{
28  *this = old;
29}
30void DVector::reDim(int newdim) {}
31int main() {}
32
33