MQL5におけるOOPに関する質問 - ページ 6

 
Dmitry Fedoseev:

それでは、どうぞ。

こんな感じ。

できるどころか、もっといい、こう呼べばいいんだから。

ポインタを参照渡しする場合、ポインタのために別の変数が必要になります。

***

また、関数にポインタを渡して関数内にオブジェクトを作成する必要がある場合、そのような仕組みになっています。

以上、基本的にOOPについて知りたかったけど、怖くて聞けなかったことをまとめてみました)))

ヌフフ

 
void z(CObj* & o){
   o = new CObj();
}

そして、こう考えるだけで、すべてがうまくいくのです。

というわけで、OOPについて何か質問があれば、遠慮なく))))

 
古典的なヌルポインタのデリフェレンシングが判明した。
 
Vladimir Simakov:

というわけで、OOPについて何か質問があれば、遠慮なく))))

new演算子でダイナミックオブジェクトを作成する意味を教えてください。

オブジェクトを自動生成する場合、スタックにクラスオブジェクトが生成され、実行時間の 点ではダイナミックオブジェクトより高速になります。
オブジェクトを動的に生成する場合、クラスオブジェクトをメモリ上(ヒープ上)に生成し、OSのメモリマネージャを起動すると、処理が遅くなる。

以下、質問です。
自動生成の方が速いなら、なぜダイナミックオブジェクトを使った方がいいのでしょうか?
メモリ割り当ての明示的な制御?
スタックオーバーフローの可能性を排除する?
そして、不意にモノを失わないこと?
スタックがオーバーフローすると、オブジェクトが自動的に削除されるから?

 
Roman:


話題に付き合うのは疲れませんか?

 
Artyom Trishkin:

話題に付き合うのは疲れませんか?

できるだけ正確な質問ができるように調整すること。
何か問題があるのでしょうか?編集ボタンがあるので、ポイントを押さえた使い方ができます。

 
Roman:

新規演算子でダイナミックオブジェクトを作成する意味を教えてください。

オブジェクトを自動生成する場合、クラスオブジェクトはスタックに作成されるため、実行時間の 点ではダイナミックオブジェクトより高速になります。
オブジェクトを動的に生成する場合、クラスオブジェクトをメモリ上(ヒープ上)に生成し、OSのメモリマネージャを起動すると、処理が遅くなる。

以下、質問です。
自動生成の方が速いなら、なぜダイナミックオブジェクトを使った方がいいのでしょうか?
メモリ割り当ての明示的な制御?
スタックオーバーフローの可能性を排除する?
そして、不意にモノを失わないこと?
スタックがオーバーフローすると、オブジェクトが自動的に削除されるから?

スタティック・メモリ、スタック、ヒープについて読んでみてはいかがでしょうか。
 
Roman:

新規演算子でダイナミックオブジェクトを作成する意味を教えてください。

明確な使用例としては、対象物の種類があらかじめわからない場合です。

以下は、ヘルプにある良い例です。https://www.mql5.com/ru/docs/basis/operators/newoperator

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
//| Создание фигуры                                                  |
 
Vladimir Simakov:

ヌフフ

そうなんです!ただし、なぜかすべてコンパイルして動作するんです。

どんな奇跡がそこにあるのか...。誰も知らないが、ところで、昨日のコードサンプルは、このスレッドのどこかから取ったと思われるが、実際にはどこかから消えているのだから、驚くにはあたらない。

***

そういえば、元々話していたこと、つまり関数やメソッドへのポインタの渡し方について(そして、そこで何らかのメモリリークが起こると主張したことについて)、まさに「&」が必要ない場所だと忘れてはいないでしょう。


 
Roman:

new演算子でダイナミックオブジェクトを作成する目的を教えてください。

オブジェクトを自動生成する場合、クラスオブジェクトはスタックに作成され、実行時間の 点ではダイナミックオブジェクトより高速になります。
オブジェクトを動的に生成する場合、クラスオブジェクトはメモリ上(ヒープ上)に生成されるため、OSのメモリマネージャが関与し、処理速度が低下します。

以下、質問です。
自動生成の方が速いなら、なぜダイナミックオブジェクトを使った方がいいのでしょうか?
メモリ割り当ての明示的な制御?
スタックオーバーフローの可能性を排除する?
そして、不意にモノを失わないこと?
スタックがオーバーフローすると、オブジェクトが自動的に削除されるから?

オブジェクトの数があらかじめ分かっていて、プログラムの実行中も一定であれば、newは必要ない。それ以外の場合 - 新品