テンプレート・パラメータ = void* のコンパイラ・バグ - ページ 19 1...121314151617181920 新しいコメント Ilya Malev 2018.12.21 03:00 #181 pavlick_:自爆?- というのは新しいですね :) そう、自爆するんだ。これが「スタック」オブジェクトとダイナミック・オブジェクトの違いであることはご存じだと思いますが、ダイナミック・オブジェクトは自分自身をいつ削除するか尋ねません。) pavlick_ 2018.12.21 03:04 #182 Ilya Malev: そう、自爆だ。これが「スタック」オブジェクトとダイナミック・オブジェクトの違いであることはご存じだと思いますが、ダイナミック・オブジェクトは自分自身をいつ削除するか尋ねません。)コピー/ムーブコンストラクタ/オペレータという言葉を聞いたことがあるのではないでしょうか? obj o; { obj q; o = q; o = move(q); // С++ вариант, более эффективный } Ilya Malev 2018.12.21 03:06 #183 pavlick_:コピー/ムーブコンストラクタ/オペレータという言葉を聞いたことがあるのではないでしょうか? では、その決定的な瞬間を見計らって、手遅れでなければ、そのようにコピーするのですか?:笑 ただ単に、OOPが嫌いだからなのか、それとも他に理由があるのか? pavlick_ 2018.12.21 03:10 #184 Ilya Malev:では、その決定的な瞬間を見計らって、手遅れでなければ、そのようにコピーするのですか?:笑 ただ単に、OOPが嫌いだからなのか、それとも他に理由があるのか?もちろん、それ以外にはないでしょう。まともなプログラマは、ダイナミックオブジェクトもスタックで管理する必要がある(RAII技法) { unique_ptr<Class> p(new Class); ... // ой, самоуничтожение :) } Ilya Malev 2018.12.21 03:11 #185 そして、地獄のような、そのためのラッパーをたくさん作るのです。なぜなら、ポリモーフィズムの ニッチはそれほど重要ではありませんが、私たちの松葉杖は、OOPを使用しない場合、全体のフィールドのアプリケーションを持っています:cry。 Ilya Malev 2018.12.21 03:24 #186 pavlick_:もちろん、それ以外にはないでしょう。まともなプログラマであれば、ダイナミックオブジェクトもスタックオブジェクトで管理しなければならない(RAIIテクニック)。 ゴミ収集員のことですか?))) や,参照回数のカウントなど,最近実践していることがあります。 Ilya Malev 2018.12.21 03:27 #187 din.objectsをスタックで管理するということは、各オブジェクトに24バイトのメモリを追加で割り当てるということです(その分、オブジェクト自体への「スタックポインタ」+「参照」が「重く」なる)。それに、スピードという意味での時間コストも決して小さくはない。このようなことは、全体としてはむしろ悲しいことです。しかし、私たちもそこに大きな必要性を感じているわけではありません。恐怖は多くの目を持つ、と言われるように。宇宙ステーションのプログラミングをするのであれば、厳密な管理がなければできないことです。しかし、そのままでは、細かく設定されたクラスシステムによって、それがなくてもすべてがうまく機能します。 pavlick_ 2018.12.21 04:03 #188 いや、屑コレクターの話じゃなくて、スマートポインタの話。 unique_ptr, shared_ptr (with reference counting), RAII は簡単にググれる。 一般に unique_ptr はメモリ的に余計なコストがかからないし (wrapper == pointer size) 、呼び出しも最適化され過ぎだが、μl では全てが悲しい、そうだ。しかし、ここでも必要ない(スマートポインター)。 Alexey Navoykov 2018.12.21 04:42 #189 pavlick_: あるいは、テンプレートを使って、次のように書くこともできます。 https://www.mql5.com/ru/forum/295485/page18#comment_9971363 また、Buttonはポリモーフィズムやインターフェイスを一切使用せず、ディテールに依存しない。ポリモーフィズムにはニッチがありますが、それは彼らが言うよりずっと狭いものです。 このように単純化された例では、確かにテンプレートの方が便利そうです。実際、インスタンスは1つだけなので、テンプレートは必要ありません。 pavlick_ 2018.12.21 05:24 #190 Alexey Navoykov:この簡略化された例では、確かにテンプレートの利便性が向上しているように見えます。実際、インスタンスは1つだけなので、テンプレートは必要ありません。ボタンランプvia g with virtuality。 struct SwitchableDevice { virtual void switchOn() = 0; virtual void switchOff() = 0; }; struct Lamp : SwitchableDevice { void switchOn(){std::cout << "shine bright" << std::endl;} void switchOff(){std::cout << "i am not afraid of the dark" << std::endl;} }; struct Button { SwitchableDevice& dev; bool state = false; Button(SwitchableDevice& d) : dev(d) {} void buttonPress(){ if (state) { dev.switchOff(); } else { dev.switchOn(); } state = !state; } }; int main(){ Lamp lamp; Button button(lamp); button.buttonPress(); button.buttonPress(); } 陳腐化した例 1...121314151617181920 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
自爆?- というのは新しいですね :)
そう、自爆だ。これが「スタック」オブジェクトとダイナミック・オブジェクトの違いであることはご存じだと思いますが、ダイナミック・オブジェクトは自分自身をいつ削除するか尋ねません。)
コピー/ムーブコンストラクタ/オペレータという言葉を聞いたことがあるのではないでしょうか?
obj o; { obj q; o = q; o = move(q); // С++ вариант, более эффективный }
コピー/ムーブコンストラクタ/オペレータという言葉を聞いたことがあるのではないでしょうか?
では、その決定的な瞬間を見計らって、手遅れでなければ、そのようにコピーするのですか?:笑
ただ単に、OOPが嫌いだからなのか、それとも他に理由があるのか?
では、その決定的な瞬間を見計らって、手遅れでなければ、そのようにコピーするのですか?:笑
ただ単に、OOPが嫌いだからなのか、それとも他に理由があるのか?
もちろん、それ以外にはないでしょう。まともなプログラマは、ダイナミックオブジェクトもスタックで管理する必要がある(RAII技法)
もちろん、それ以外にはないでしょう。まともなプログラマであれば、ダイナミックオブジェクトもスタックオブジェクトで管理しなければならない(RAIIテクニック)。
ゴミ収集員のことですか?))) や,参照回数のカウントなど,最近実践していることがあります。
いや、屑コレクターの話じゃなくて、スマートポインタの話。 unique_ptr, shared_ptr (with reference counting), RAII は簡単にググれる。 一般に unique_ptr はメモリ的に余計なコストがかからないし (wrapper == pointer size) 、呼び出しも最適化され過ぎだが、μl では全てが悲しい、そうだ。しかし、ここでも必要ない(スマートポインター)。
あるいは、テンプレートを使って、次のように書くこともできます。
https://www.mql5.com/ru/forum/295485/page18#comment_9971363
また、Buttonはポリモーフィズムやインターフェイスを一切使用せず、ディテールに依存しない。ポリモーフィズムにはニッチがありますが、それは彼らが言うよりずっと狭いものです。
このように単純化された例では、確かにテンプレートの方が便利そうです。実際、インスタンスは1つだけなので、テンプレートは必要ありません。
この簡略化された例では、確かにテンプレートの利便性が向上しているように見えます。実際、インスタンスは1つだけなので、テンプレートは必要ありません。
ボタンランプvia g with virtuality。
陳腐化した例