私はC++ Primer Plus by Stephen Frataを読んでいます。私は第6章まで読んだことがあります。これは、ポインタについて学んだことですが、オブジェクトやクラスについては学んでいないことを意味します(OOPについて知っていますが)。スマートポインタなしでポインタを処理するにはどうすればよいですか?
私は、ActionScript(フラッシュ)やJavaの背景から来たので、私は前にポインタを扱ったことがないが、私はそれを理解しています。私は彼らについての質問の束を持っています。
私が理解できるように、あなたはすなわち、ポインタはそれを解放する責任が作成したオブジェクト/機能、新しいペアおよび削除する必要があります。しかし、次のような簡単なファクトリ関数を想像してみてください。
SomeObject * createSomeObject(){
return new SomeObject;
}
これはかなり問題があります。誰がこのポインタを解放する責任がありますか?
作成したポインタにパブリックアクセスできるクラスを作成するとどうなりますか?新しい/削除ルールに続いて、このクラスはデストラクター内のポインターを解放する責任があります。ポインタが別のクラスによって使用される可能性があるため、最初のクラスを破壊すると、第二を破っだろうが...
これら2人の取調べは似ています。それを作成したエンティティ以外のエンティティに知られているポインタを管理するにはどうすればよいですか?
注:私は、スマートポインタは、この問題を解決することができることを認識してんだけど、私は人々がそれらなしで行う方法を思ったんだけど。かなり問題になります
'注:私はスマートポインタがこの問題を解決できると知っていますが、私は人々がそれらなしでどうしているのか疑問に思っています。 :) – etarion
あなたが持っているものが有害だと思われるので、別の本を購入したいかもしれません:http://accu.org/index.php?module=bookreviews&func=search&rid=1744 – sellibitze
@sellibitze – subb