通过引用传递空的或未初始化的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参考问题。
答
是的,它总是安全的。 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容器的引用 - 这是安全的。
请放心,C++中没有空引用。在所有的疯狂中间有一些理智。 – 2012-08-08 10:42:29