Если obj1 + obj2 действительно возвращает объект, который имеет член функции show (), то да, это возможно.
Если нет, это не так.
Итак, это зависит отоператор + функция, которая используется здесь, зависит от обоих типов obj1 и obj2.
obj1 + obj2 - это выражение, имеющее тип, тип объекта, возвращаемого операцией, как любое выражение.Теперь, когда выражение выполнено, у вас есть этот объект.Но поскольку здесь вы не связываете его с именем (например, с помощью присваивания), оно является «временным», то есть оно будет уничтожено в конце полного выражения.
Итак, если результирующий тип временного объекта предоставляет функцию show (), вы можете вызывать ее, как и вы.
Если он не предоставляет функцию show (), то вы пытаетесь вызвать функцию, которая не существует.
Так что в любом случае компилятор остановит вас, это не будет ошибкой во время выполнения.
Я был бы вами, я бы настроил минимальный тестовый проект, чтобы просто поиграть с этими принципами.