$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 ];
}
?
答案 0 :(得分:1)
Herb Sutter的书籍特殊的c ++风格涵盖了第1项中的这个精确主题:在应用绑定检查时会抛出异常,其中[]在超出界限时将执行未定义的行为。我们可以根据c ++哲学自由选择我们想要使用哪一个,人们应该只为其使用的东西付费。由于它将执行检查,at()可能会更加昂贵。
http://www.cplusplus.com/reference/vector/vector/at/
你可以看一下像gcc这样的实现。