The variable "Str2" is not a string - it is a memory address fixed by the compiler where a string may be put. That is, "Str2" is a number like 4321, indicating that the address range 4321 to 4340 have been set aside for your program to fool about with.
Likewise, Str1 is also a memory address - it is the start of a 15 byte zone pre-filled with your string followed by a '\0'.
You can't change what addresses these symbols mean, which is what Str2 = Str1 + millis(); is trying to do. You can only put stuff in them using pointer/array language primitives (*Str1 = 'a';) or library functions (strcpy(Str2, Str1);).