|
お返事ありがとうございます。
> 決めているのは余計なインスタンスが作られないように、インスタンスを返す関数は作らずに > 結果を格納する参照変数で対応するということだけです。 これは「戻り値最適化」というキーワードを調べた際、一時オブジェクトを減らすことが 最適化になるという記述を見つけたためにそうしようと思いました。
方法をひとつに絞るというような記述は、計算方法は便利なものはいくつあってもいいと 思うのですが、上記の件と、書いているプログラムが完全に趣味で、自分以外が使わない為に 多少自由が利かなくても自分が分かっていればいいと思ったためです。つまり Vector3 v = vec0 * vec1; という書き方は一行に収まってすっきりするけど、自分しか使わないから Vector3 v = vec0; v *= v1; というやり方を強制してもいいよね?と思ってしまったわけです。
> でも、「結果を格納する参照変数で対応する」っていうのは、なんのことだかわからない。 これは例えば
@ Vector3 Cross(Vector3& v0, Vector3& v1); v0 と v1 で外積を求め、答えを格納した一時変数を返す。 A Void Corss(Vector3& v0, Vector3& v1 Vector3& out); v0 と v1 で外積を求め、答えを out に格納する。
@の方法を使わずにAの方法を使うということです。
> “なぜ”、そうしろ(本当に「せよ」です?「した方がよい」ではなく?)と、その参考書は言っていますか? 残念ながら、その理由についての記述はありませんでした。
> インスタンスの値を変更しなくても、インスタンスの値を参考にする場合は、static に出来ないですよね? これはどういうことでしょうか? クラス内 static 関数であれば、引数のオブジェクトの private 変数にもアクセスできますが… 広域関数でしょうか?
演算子のオーバーロードについては一応実装してあります。 四則演算子の表現に合わないような関数のインターフェースに悩んでいます。 決める…とは言ったものの、とんでもない勘違いなコードを書いている気が しまして…(前にもポインタ・参照変数を全部デファインしてたら「他の人 が見て混乱する」と言われて止めました)。
|