Nice to see that you''ve used const properly. const is good
A standards-compliant implementation of new will never return NULL. If memory runs out, it''ll throw std::bad_alloc.
You seem to rely on return values to represent errors. If someone fails to check the return values (which is going to happen sooner or later), the probability of bugs is increased. If you were to use exceptions, you''d avoid that problem. After all, if a program tries to pop more values than it pushes, then it means that there''s a logical error in the program - throw a std::logic_error or something.
Consider changing dyStack:
op so that it doesn''t take parameters. You''ve already got a mechanism for examining the topmost element; it would be nice to be able to pop an unwanted value without making a copy.
By the way, since it''s a template, you can just put the entire implementation in the .h file; you won''t get unwanted copies.
And finally, consider using std::stack
. Of course, if you wrote this for the purpose of learning, then keep at it