MQL5 コンパイラはクラスとそのポインタを区別しない - ページ 7

 
Alexey Navoykov:
つまり、ポインタの暗黙的な命名を全面的に禁止しようということですか? それを喜ぶ人はここにはあまりいないと思います。

みんなに選択肢を持たせてあげよう。

#property strict

確かにそういう仕掛けはいらないですね。

 
SemenTalonov:

まあ、それは言うまでもないことですが。メモリーリークがある

メモリリークとでも言うのでしょうか。これはどうでしょう?)))

#property strict

class A
 {
  A*  item;
  int num;
public:
  A(int p=10){num=p;item=NULL;} ~A(){if(CheckPointer(item)==POINTER_DYNAMIC) delete item;}
  A* operator=(A* par){ item = par; return&this; }
  A* operator~(){ return item; }
  int operator-(){ return num; }
 };

void OnStart()
 {
  A a = new A(20);
  printf("В автообъекте %i (%i) сохранен динамический объект %i (%i), который он в конце своего цикла сам уничтожает...",&a,-a,~a,-~a);
 }


 
Ilya Malev:

メモリリークとでも言うのでしょうか。これはどうでしょう?)))


delete item;

つまり、被写体がそのように扱われることを覚悟していることが前提になるわけです。この可能性を予見している人はどのくらいいるのでしょうか?

 
SemenTalonov:

つまり、これは対象がこのように扱われることを覚悟していることが前提です。そのような可能性に備えている人は多いのでしょうか?

もし誰かがnewという単語を書いたら、それに対応するdeleteという単語がコードの他のどこにあるのかを正確に知るべきだと思うんだ。

 
ちなみにこの構造、少し洗練されると「ゴミ取り」と呼ばれます))
 
SemenTalonov:

みんなに選択肢を持たせてあげよう。

確かに、そんな芸当は必要ないですね。

すでにMQL4で使っています。言語の構文が 同じなら、その時はどうなるのでしょうか?

このような行為から身を守るために、クラスの中にプライベートメソッドを作ることができます。

class A
{
 private: void operator=(const A*);
}

クラスオブジェクトに何かを代入する場合、コピー演算子が呼ばれることを先験的に予期しているわけですが。欲しいものは、手に入れる。ポインターかオブジェクトかで何が違うの? クラスの種類は同じです。 左利き用のクラスは一切割り当てられません。そのため、すべてがアイドルボアのように見えてしまうのです。

逆に、ポインターを左側にした場合は、ポインターに何かを代入するのかと思いきや、オブジェクトをコピーしていることが判明しました。

 
Alexey Navoykov:

逆に、ポインタを左 側にした場合は、ポインタに何かを代入しているのかと思いきや、オブジェクトをコピーしていることがわかります。

そして、これを禁止してしまうと、本当に必要なときにオブジェクトをコピーすることができなくなります。

その結果、すべてをそのままにしておかなければならない。ただ、意識してやってください。

 
fxsaber:

そして、それを禁止してしまうと、本当に必要な時にそのオブジェクトをコピーすることができなくなります。

結局、そのままにしておくしかないのです。 ただ、意識してやってください。

О!それが最大のポイントです。

ここには、メモリ管理のモードをナビゲートする方法を知っている人がたくさんいるのでしょうか?AUTOMATICとDYNAMICの違いを理解する。

そして、STATICとBASEDについて何か聞いたことがある(これは必要ないのですが)。

 
fxsaber:

そして、それを禁止してしまうと、本当に必要な時にそのオブジェクトをコピーすることができなくなります。

結局、そのままにしておくしかないのです。ただ、意識してやってください。

なぜうまくいかないのでしょうか? 必要なものに変換するための*や &の 演算子があるのです。
 
Alexey Navoykov:
なぜうまくいかないのか? 必要なものまで減らすために、*や &の 演算子があります。

どこにあるのですか?