2

在设计一个类或一个函数时,下面显示的哪种方式更好,为什么?

class Container {

    //Provide this functionality??
    void addItemVariadic(const Value& val, ...);

    //Or provide this functionality??
    void addItemList(const list<Value>& vals);

};

提供像 addItemVariadic(..) 或 addItemList(..) 这样的函数更好吗?

还是提供一组这样的功能更好,比如进一步获取一些迭代器,或者限制功能更好,比如只获取一个列表?

4

1 回答 1

2

使用可变参数函数很危险

如果你传递了一个没有适当类型的变量,它会在运行时调用函数时崩溃。

相反,如果您使用 a std::list,它不会简单地编译,并且可以避免崩溃。

顺便说一句:我建议你在这种情况下使用std::vector而不是。std::list

Edit1 可能的重复问题。使用运算符 <<一次输入所有参数的一个很好的解决方案。

Edit2为了在不同的 std::containers 之间进行选择,有一个选择图作为这个问题的答案。此图针对 C++03,它不涵盖 C++1 中引入的新容器。

于 2013-01-18T12:33:29.593 回答