Приведенный выше метод возвращает указатель на arg типа ClassName *.
Я полагаю, что объяснение этого вопроса предполагает базовые знания о том, как вызываются функции, как переданные значения помещаются в стек перед вызовом функции и как возвращаемые значения возвращаются из функции.
В этом конкретном случае ваша переменная arg
является частью класса, что означает, что она хранится в памяти, которая является частью объекта. Когда вы возвращаете указатель на него, вы указываете на определенную область памяти внутри объекта.
Другой вариант - вернуть копию значения. Это означало бы сделать копию и вернуть ее.
Разница в том, что если вы возвращаете указатель на внутреннюю переменную объекта, это состояние объекта может быть изменено извне.
Если вы вернете копию, эту копию можно изменить, а исходный объект не изменится.
Не уверен, поможет ли это, но вы спрашиваете об очень простой теме разработки программного обеспечения, которая предполагает некоторые базовые знания.
Может, уточните, что именно вы ищете?