仮に行列クラスがあったとして

x, y: TMatrix;
...
x := TMatrix.Create( ... );
y := x.Add( ... ); {*}

で、{*}の一行でxの内容が変わったら変でしょう?
使う側は

var
 n1, n2: TNum;
begin
 n1 := TNum.Create;
 n1.num1 := 1;
 n1.num2 := 2;
 n1.num3 := 3;
 n2 := n1.numChange(3);
 ShowMessage(...); {n2を表示}
 n1.Free;
 n2.Free;
end;

で、どうです?