std::shared_ptr
は、アドレスを書き出すだけのoperator<<
を提供します。 operator>>
はなく、コンテンツのないアドレスだけが記録されます。私はそれがどのような場合に有用か疑問に思います。なぜstd :: shared_ptrは演算子<<を提供しますか?
4
A
答えて
0
<<
が生ポインタ上で行うことが潜在的に有用なことであるためです。それは安全であり、生ポインタがするものであり、ある状況では生ポインタを置き換えるためにshared_ptr
が使われることになっています。
コンパイルでは、>>
は非常に稀です。未処理のポインタとは異なり、共有ポインタにポインタ値を格納すると、そのポインタの所有権が取得されます。
私はsome_stream >> raw_ptr
です。私がptr
で何かしない限り、何も間違っていません。少し奇妙ですが、何もすぐに壊れません。
shared_ptr
と同じことを行うと、非常に難解な状況でのみ安全になります。そのような状況では、生のポインタを最初に投入して共有ポインタにロードするステップを踏まなければならないということは、あまりにも負担がかかるようには見えません。
関連する問題
- 1. std :: shared_ptrに[]演算子がないのはなぜですか?
- 2. '演算子<<' のstdで::演算子<< [_Traits =のstdと:: char_traits <char>]
- 3. 演算子<< enum型の演算子<<は、オーバーロードされた演算子を使用しているかどうかを示します。
- 4. <<演算子をオーバーロードしてstd :: listを出力する
- 5. なぜstd :: atomic <integral>の特殊化は乗算と除算の代入演算子を提供しますか?
- 6. なぜstd :: stringを書き込んで、未知の演算子<<エラー?
- 7. `のstd ::はistream&起動するには<< INT&」演算子
- 8. std :: shared_ptrを<T>からstd :: shared_ptrに初期化します。<void>
- 9. <<演算子とC++の文字列のオーバーロード+演算子
- 10. なぜstd :: future <T>とstd :: shared_future <T>はメンバーswap()を提供していませんか?
- 11. は、<<のstd演算子のオーバーロード:: ostreamに
- 12. std :: setwは、ユーザー定義型の演算子<<
- 13. `std :: initializer_list`が添字演算子を提供しないのはなぜですか?
- 14. evalulate演算子を停止<<
- 15. なぜ `<< std :: endl`が呼び出したい演算子を呼び出さないのですか?
- 16. 演算子<<、C++抽象クラスで
- 17. std :: shared_ptr <std :: vector <double>>
- 18. Ruby:<< - 演算子
- 19. C++ ostream演算子<<オーバーロード
- 20. << and >>演算子は何をしますか?
- 21. STLのstd :: setコンテナパラメータがオーバーロードされた演算子<<()
- 22. 演算子のオーバーロード<<ネームスペース対
- 23. 演算子の実行順序<<
- 24. <<演算子はルビメソッドで何をしますか?
- 25. << =演算子はjavascriptで何をしますか?
- 26. std :: shared_ptr <T[]>の専門はなぜですか?
- 27. "<" 演算子は、Python
- 28. オーバーロード比較です演算子「無効な演算子は、<」
- 29. 友人演算子<<テンプレートクラスのオーバーロード
- 30. shared_from_this()はstd :: shared_ptrを返します。<const X>ではなくstd :: shared_ptr <X>
std :: cout << ptrは裸のポインタと似ています – stijn
演算子>>とは何でしょうか?生ポインタはその演算子もサポートしません。 –
@NeilButterworth: 'std :: basic_istream'には、rawを読み込むための[' operator >>(void *&value) '](http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt)があります。ポインタ。これは 'shared_ptr'にとって危険かもしれませんが、' shared_ptr'は生のポインタから構築できるので、 'shared_ptr'への直接的な代入のために'演算子 ''を作成することはできません。カスタムディレターが必要な場合は動作しませんが、最初にポインターを読み込んでから新しいshared_ptrを作成して、ディレーターを指定する必要があります。 –