Changes to the layout of structs and classes normally require a restart. The editor will try to update functions, classes and structs, but this will usually result in messing things up even further by spamming “HOTRELOADED type” everywhere. I usually leave the editor closed when programming in C++. It is less of an inconvenience than it sounds.
There is live coding, which in my experience is practically a useless gimmick. Theoretically, as long as you don’t change the layout of your classes, you can update function code(logic, algorithms) and see the changes in real-time, where real-time is defined as several minutes of compiling code. What makes it almost irrelevant is the fact that is already possible as long as you don’t change the layout and know what you are doing. Still, it exists, and you may find it useful.
In short, C++ changes the engine itself. It requires a reload most of the time, unless you are changing just execution code. You may also have to delete instances of actors if you change the parent class in C++. UE4 can go full diva if you don’t update instanced actors whenever you make significant changes to their parent class.