obj2 = baseObj1;//Пока не грохнули объект - no problem
建築的にはどうなのでしょうか。
こちらも同様です。
class A {}; class B : public A {}; class C : public B {}; voidOnStart() { B *b = new B; delete b; B *c = b; b = new C; A *a = c; Print( a, ":", b, ":", c ); }
class A {}; class B : public A {}; voidOnStart() { B *b1 = new B; A *a = b1; delete b1; B *b2 = b1; b1 = new B; //уже другой объект a = b2; // Print( a, ":", b1, ":", b2 ); }
Condensed report! The following is a condensed report of the behaviour of the file when executed in a controlled environment. The actions and events described were either performed by the file itself or by any other process launched by the executed file or subjected to code injection by the executed file. Opened files C:\Documents and...
オブジェクトポインタの間違った動作に遭遇したことがある(私の意見)。
MQLのエラーのようです。
エラーが出ていますね。空の親を子孫に割り当てるというのは、どのようなイメージでしょうか。
MQLのエラーのようです。
エラーが出ていますね。空の親を子孫に割り当てるというのは、どのようなイメージでしょうか。
空でないのと同じように。baseObj1には、子孫クラスのオブジェクトへの ポインタがある。delete(obj1)を削除しても、最後の行の代入は何の問題も起こりません - ポインタの型は一致しています。ポインタが参照しているオブジェクトが削除された場合、代入は同じように行われる必要があると思います。また、削除されたオブジェクトにアクセスしようとしたわけではないので、「無効なポインタへのアクセス」エラーは発生しないはずです。
以下は、あなたのコードのこの部分です。
どうやら、baseObj1が参照するオブジェクトの型と、ポインタobj2の型が一致するかどうかをチェックしているようです。ここには2つの可能性があります。
1) ポインタ自体は、オブジェクトの型を含む複雑な構造体であってもよい
2) オブジェクトを参照して、その型を調べる必要がある。
これはケース2のようで、それに耐えるしかないでしょう。誘導尋問ありがとうございました )
カスペルスキーは先週からアップデートしようとして端末に怒鳴り込んでいます。
あなたのコードのこの部分
こちらも同様です。
class B : public A {};
class C : public B {};
void OnStart()
{
B *b = new B;
delete b;
B *c = b;
b = new C;
A *a = c;
Print( a, ":", b, ":", c );
}
ここと同じようにね。
class B : public A {};
void OnStart()
{
B *b1 = new B;
A *a = b1;
delete b1;
B *b2 = b1;
b1 = new B; //уже другой объект
a = b2; //
Print( a, ":", b1, ":", b2 );
}
カスペルスキーは先週からアップデートしようとして端末に怒鳴り込んでいます。
すべてクリア、ビルド1545。カスペルスキーもすべてクリアとのこと。
https://www.virustotal.com/ru/file/2c3bf04666714cfac26e6e1c0fe355c6081554a0c2a15434849b0a5c241c95b0/analysis/1487685060/