You haven't told us what the problem is, what your expected behaviour is, or what the observed behaviour is.
My guess is that you're seeing the call on line 3 treating the input as a Shape and you're expecting it to be treated as a Rectangle.
This is because you're passing in by value, which means that in the call to SomeFunction, you're creating an actual Shape object. The object that the code inside SomeFunction operates on is not actually a Rectangle - it's just a Shape.
What you want to do is redefine SomeFunction so that it takes either a reference to Shape, or a pointer to Shape. Then you'll see the polymorphic behaviour you're expecting.
void SomeFunction (Shape); //a function that does nothing
Shape * pRect = new Rectangle; //declareing and initializing shape pointer
SomeFunction(*pRect); //a call to the function that does nothing
I think the problem is that your code does not do anything