You set pp to NULL.
You call your >> function. Parameters are passed by value. The value NULL is copied into the function local variable tempChars. returnTHIS points to the newly allocated memory. The current value (NULL) in tempChars is replaced by the value in returnTHIS. Your function returns. tempChars is destroyed as is normal for local function variables when they go out of scope.
Notice that nothing happened to pp. It still contains the value NULL.
If you change the function signature to accept the char* by reference, that may solve your problem since tempChars essentially becomes an alias for pp.
Notice also that you never release the memory allocated by new. If you call your >> function more than once, you have created a probable memory leak. Also consider that there is no need for your char[] to by dynamically allocated. You could change the definition of returnTHIS to
static const char returnTHIS[] = {'|', '|'};
After these changes, pp would point to the static array inside your >> function and your << function would have no trouble accessing it.