从 C STL 容器派生的风险
尽管从 C STL 容器派生类具有潜在的优势,例如函数重载、模板专门化和改进的调试,但这种方法存在固有的风险。
考虑以下示例:
#include <vector> class Rates : public std::vector<double> { }; class Charges : public std::vector<double> { }; int main() { auto p1 = new Rates; auto p2 = new Charges; kill_it(p2); // User code that knows nothing about Rates or Charges kill_it(p1); return 0; }
kill_it 函数在执行 std::vector
如果用户无意中在kill_it 函数的 ??? 中引入错误,就会出现问题。部分。例如,如果用户在调用kill_it(p2)之前修改p2以指向Rates对象,则std::vector
为了减轻这种风险,通常建议在处理 STL 容器时使用组合而不是派生。组合允许更灵活且不易出错的方法。
以上是您是否应该继承 C STL 容器:风险和替代方案?的详细内容。更多信息请关注PHP中文网其他相关文章!