通过引用将空的或未初始化的 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
。
STL 容器具有默认构造函数,在这种情况下会调用它们:
deque<string> some_data;
所以容器被初始化了,传递一个对它的引用是完全可以的
线
deque<string> some_data;
确保some_data
在调用构造函数时至少初始化变量。
因此,您只是传递对空 STL 容器的引用 - 这是安全的。