The only hard part about using C++ is manual memory managment. Explicit memory managment is where most people get WTF sign and give up.
And for that matter UE4 solves this problem. As long as you are using UPROPERTY() or TWeakObjectPtr, you don’t need to understand what memory is, really.
The only harder part is when you are going to extend engine, editor or write UI using Slate. As there even using smart pointers you still have to think a bit about managing memory.