掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メンバ関数のstaticについて (ID:68251)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
まず static って何ぞやって理解は大丈夫なのだろうか。 > staticを付けると1つしか定義できないと僕は認識しています。 それは結果論であって本質ではないと思うぞ。 class hoge があるとして static メンバー=およそ hoge であるものすべてに共通な何か 非 static メンバー=特定の hoge インスタンス1つについての何か 「本質的に共通」であるがゆえに1つしか必要ない、っつーことで 技術的な解説をするなら static メンバー関数は C の頃の関数「非メンバー関数」と同等 非 static メンバー関数は「this を暗黙の引数として取る関数」 というわけで static メンバー関数のほうが1つ引数が少ないわけだ その分 static メンバー関数は呼び出しコストも低い 提示サンプルは static にする代わりに string& 引数がひとつ増えている これは言ってみれば暗黙の this に相当するわけで、結局のところ 非 static メンバー関数を自前で明示的に作っているだけだ。 この例での呼び出しコストは、引数がひとつ増えたため同一だ ただし string& 引数を明示的に渡せるようにしておけば、 そこには this 以外も渡せる、という意図があるわけだ。 shortcutPath と shortcutPathDest と2つあるけど、こいつらは this を直接使う場合と this 以外を使う場合と、2つ使い分けしてる。 使い分けをしないでよい関数はきっちり non-static になっているよ。 俺なら string を派生したクラスは作らないけど
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.