// should I initialize here?
Why would you want to initialize in display()? That is presumably an output function, although it doesn't do anything yet.
The proper place to initialize is in the implementation of the constructors, which you are already doing.
s1 and s3 have no arguments, so you will invoke the default constructor for each.
s2 has arguments, so you will invoke shape's 3 argument constructor.
How can I use class, constructors and destructors while drawing a graph? especially please tell me where should i initialize initgraph.
What is initgraph? I see no declaration for it nor a description of it.
All you have defined a a shape class. A shape is not a graph. If you want to represent a graph, then you need a drawing space and the ability to place shapes in the drawing space.
PLEASE USE CODE TAGS (the <> formatting button) when posting code.
It makes it easier to read your code and also easier to respond to your post. http://www.cplusplus.com/articles/jEywvCM9/