What is the difference b/w and use cases of GetComponentByClass and FindComponentByClass?

Have been trying to get a pointer to a UPhysicsHandleComponent from the owning Actor using: UPhysicsHandleComponent* PhysicsHandler = GetOwner()->FindComponentByClass();
which works.

What is the real difference between using the FindComponentByClass<>() function and GetComponentByClass()? Can both be used in similar use cases? If not what are the use cases?

GetComponentByClass is actually just another alias for the untemplated FindComponentByClass.

If you look at Actor.cpp, you’ll find the following:

UActorComponent* AActor::GetComponentByClass(TSubclassOf<UActorComponent> ComponentClass) const
	return FindComponentByClass(ComponentClass);

I have witnessed this a lot in the source code, is there a reason why they would do that?

Pure speculation (I never worked on a super large project like the UE):
Some developers tend to type in “Find…” for such a function, others “Get…”. This might be a convenient way to just serve both types without some strict company guidelines (or it is for the end user), so that both find the right thing.

It won’t make any difference performancewise which one is used (probably), as a compiler will just optimize the alias to the original.