2012-08-08 49 views
0

通過引用將空的或未初始化的STL容器傳遞給函數總是安全的嗎?例如通過引用傳遞空的或未初始化的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參考問題。

+1

請放心,C++中沒有空引用。在所有的瘋狂中間有一些理智。 – 2012-08-08 10:42:29

回答

3

是的,它總是安全的。 deque<T>不是一個指針類型 - 它是一個對象類型。標準容器有一個默認的構造函數,所以,這種說法

deque<string> some_data; 

some_data後是一個正確構建空deque

+0

謝謝你的回答和解釋我想我會小心的用指針來做 – 2012-08-08 10:45:00

2

STL容器有默認的構造函數,這是所謂的在這種情況下:

deque<string> some_data; 

所以容器被初始化,這是完全確定的引用傳遞給它

1

deque<string> some_data; 

確保變量some_data至少初始化,作爲構造函數被調用。

因此,你只是傳遞一個空的STL容器的引用 - 這是安全的。