at()和重载operator [] C ++之间的区别

时间:2017-02-26 14:54:09

标签: c++ operator-overloading overloading

$stmt = $db->prepare("INSERT INTO `pdo-demo` (`firstname`, `lastname`, `email`) value (:firstname, :lastname, :email)"); 和重载at() operator之间有什么区别?除了[ ]提供边界检查并抛出异常at()之外,它们的实现有何区别?

实现out_of_range operator

[ ]

您能否了解实现 const int LIMIT =100; ....................... int& operator[ ] (int n) const { if(n<0 || n >= LIMIT) { std::cout<<"Error index!"<<std::endl; exit(1); } return arr[ n ]; }

1 个答案:

答案 0 :(得分:1)

Herb Sutter的书籍特殊的c ++风格涵盖了第1项中的这个精确主题:在应用绑定检查时会抛出异常,其中[]在超出界限时将执行未定义的行为。我们可以根据c ++哲学自由选择我们想要使用哪一个,人们应该只为其使用的东西付费。由于它将执行检查,at()可能会更加昂贵。

http://www.cplusplus.com/reference/vector/vector/at/

你可以看一下像gcc这样的实现。