Por otro lado, cosas como:
Código:
paux=new char[!n?strlen(b):n+1];
que pueden parecer muy "guays" no se llevan en C++.
Por otra parte, si usas C++, ¿no deberías de usar la STL, clase String, o implementar otra?
Otra cosa,
No hace falta el if(a), delete no elimina punteros nulos (cierto?).