¿El parámetro inout / var hace alguna diferencia con el tipo de referencia?

yo se queinout hace paratipos de valor.

Con objetos o cualquier otrotipo de referencia, hay un propósito para esa palabra clave en ese caso, en lugar de usarvar?

Ejemplo de código:
private class MyClass {
    private var testInt = 1
}

private func testParameterObject(var testClass: MyClass) {
    testClass.testInt++
}

private var testClass: MyClass = MyClass()
testParameterObject(testClass)
testClass.testInt // output ~> 2

private func testInoutParameterObject(inout testClass: MyClass) {
    testClass.testInt++
}

testClass.testInt = 1
testInoutParameterObject(&testClass) // what happens here?
testClass.testInt // output ~> 2

Podría ser lo mismo que simplemente elvar palabra clave en la lista de parámetros.

Respuestas a la pregunta(2)

Su respuesta a la pregunta