通过引用传递空的或未初始化的STL容器

问题描述:

通过引用将空的或未初始化的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

是的,它总是安全的。 deque<T>不是一个指针类型 - 它是一个对象类型。标准容器有一个默认的构造函数,所以,这种说法

deque<string> some_data; 

some_data后是一个正确构建空deque

+0

谢谢你的回答和解释我想我会小心的用指针来做 – 2012-08-08 10:45:00

STL容器有默认的构造函数,这是所谓的在这种情况下:

deque<string> some_data; 

所以容器被初始化,这是完全确定的引用传递给它

线

deque<string> some_data; 

确保变量some_data至少初始化,作为构造函数被调用。

因此,你只是传递一个空的STL容器的引用 - 这是安全的。