292                                                    10. 

  -   . 
.       , -
     virtual    .   
 ,    . ,  , -
  ,    .

       . -
     ,   -
     .    
   shape ():

  shape2.cpp

class shape {                           //

public:

virtual double area() const { return 0; }   //
//virtual double area()    

protected:

double x, ;

};

class rectangle : public shape {        //
public:

double area() const { return (height * width); }
private:

double height, width;                //, 
i .

class circle : public shape {           //
public:

double area() const { return (PI * radius * radius);}
private:

double radius;

};

          -
.       .
     .

 ,    , -
 :

shape* p[N] ;

for (i = 0; i < N; ++i)

tot_area += p[i] -> area() ;

     ,      
,      1.   -
       -
 .