我不清楚我正在查看的函数中auto的用法。给定一个如下定义的参数:
someFunction(const unique_ptr<BSTNode<int>>& node, paramType param) {
函数体建立一个像这样的局部变量:
auto *localNode = node.get();
我对auto的理解是它推导出在编译时分配给它的类型。文档声明unique_ptr::get()
返回指向它管理的对象的指针。鉴于这一事实,为什么有必要在变量声明中添加*
?
答案 0 :(得分:3)
为什么有必要在变量声明中添加
*
?
不是。好处是它使读者非常明显地localNode
是一个指针。
答案 1 :(得分:3)
使用*
来推断指针是不必要的,但可能是理想的。如果稍后更改了代码,使初始化程序不再返回指针,则*
将导致自动扣除失败。如果使用此变量的代码在设计时考虑了指针,那么这可能是一件好事。