Your copy constructor looks fine (ignoring the whole "why store an int as a dynamic object" thing) but your assignment operator is not exception safe or neutral. If the new in the assignment operator throws then your object is in an indeterminate state.
If you use the copy and swap idiom you get both exception safety and neutrality AND scarily make the assignment operator three lines long without any logic getting in the way:
stickfigure& operator = (const stickfigure& ref)
{
stickfigure temp( ref );
std::swap( ref.test, test );
return *this;
}
It's an idiom well worth knowing and is pretty well described in "Exception C++" by Herb Sutter. When you get through your introductory text book it's well worth a read.
Cheers,
Ash