在设计类或函数时,哪种方式(如下所示)更好,为什么?
class Container {
//Provide this functionality??
void addItemVariadic(const Value& val, ...);
//Or provide this functionality??
void addItemList(const list<Value>& vals);
};
提供像 addItemVariadic(..) 或 addItemList(..) 这样的函数更好吗?
或者是提供一组这样的函数更好,比如进一步采用一些迭代器,还是限制功能更好,比如只采用一个列表?
最佳答案
使用可变参数函数危险
如果您传递的变量没有适当的类型,那么在调用函数时,它将在运行时崩溃。
相反,如果您使用 std::list
,它不会简单地编译,并且可以避免崩溃。
顺便说一句:在这种情况下,我建议您使用 std::vector
而不是 std::list
。
编辑1 Possible Dupplicate Question. 一个很好的解决方案,使用运算符<<一次性输入所有参数。
Edit2 为了在不同的 std::containers 之间进行选择,有一个选择图作为 this question 的答案。该图针对 C++03,不包括 C++1 中引入的新容器。
关于c++ - 可变参数函数声明 VS 使用列表的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398992/