cgm*_*gmb 8 c++ pointers const pass-by-reference
我遇到了一些使用这样的方法的代码:
QList<Item*> itemList;
void addItem(Item* const& item)
{
itemList.append(item);
}
Run Code Online (Sandbox Code Playgroud)
现在,我看不出它与此之间有任何有意义的区别:
QList<Item*> itemList;
void addItem(Item* item)
{
itemList.append(item);
}
Run Code Online (Sandbox Code Playgroud)
但很明显有人不顾一切地使用这种奇怪的类型.或许重构工具可能出错了.
保留该功能签名有什么好的理由吗?某种表现不同的角落案例?我什么都想不到.
唯一的区别是,在第一个版本中,您将不被允许更改item函数内部的本地值(您仍然可以将Item其修改为指向).因此,如果您希望Item*由于某种原因保持不同的值,则您将被迫使用另一个类型的本地,Item*并且该函数将消耗额外的sizeof(intptr_t)字节堆栈空间(boo hoo).
我知道,不是惊天动地.