0

空または初期化されていない STL コンテナーを参照によって関数に渡すことは常に安全ですか? 例えば

void some_function(deque<string> &passed_by_ref) {

passed_by_ref.push_back("a string");

}

int main() {

deque<string> some_data;

some_function(some_data);

return 0;

}

このアプローチに問題はありませんでしたが、NULL 参照の問題が発生する可能性があるかどうかはわかりません。

4

3 に答える 3

3

はい、常に安全です。deque<T>はポインタ型ではありません - オブジェクト型です。標準コンテナにはデフォルトのコンストラクタがあるため、このステートメントの後に

deque<string> some_data;

some_dataは正しく構築された空のdequeです。

于 2012-08-08T10:40:52.767 に答える
2

STL コンテナーにはデフォルトのコンストラクターがあり、その場合に呼び出されます。

deque<string> some_data;

コンテナが初期化され、コンテナへの参照を渡してもまったく問題ありません

于 2012-08-08T10:40:44.713 に答える
1

この線

   deque<string> some_data; 

コンストラクターが呼び出されたときに、変数some_dataが少なくとも初期化されていることを確認します。

したがって、空の STL コンテナーへの参照を渡すだけです。これは安全です。

于 2012-08-08T10:42:23.363 に答える