我的代码库中有这段代码:
inline void Widget::setParent(Widget& roWidget)
{
auto upoSelf = m_poParent->remove(*this);
upoSelf->m_poParent = &roWidget;
roWidget.m_aupoChildren.emplace_back(std::move(upoSelf));
}
在这种情况下,upoSelf
始终是std::unique_ptr
指向this
的对象Widget::setParent
。所以实质上,Widget
具有处理其自身函数内的mShowDetailsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < mItemsList.getAdapter().getCount(); i++) {
listView.performItemClick(
getViewByPosition(i),
i,
listView.getAdapter().getItemId(i));
}
}
});
//the listview getChildAt only return the view(item) that is visible,
//therefore add a function to get invisible view together
public View getViewByPosition(int position) {
int firstItemPosition = listView.getFirstVisiblePosition();
int lastItemPosition = firstItemPosition + listView.getChildCount() - 1;
if (position < firstItemPosition || position > lastItemPosition ) {//is invisible
return listView.getAdapter().getView(position, null, listView);
} else {
int childIndex = position - firstItemPosition;//is visible
return listView.getChildAt(childIndex);
}
}
对象的行为。
我想知道是否有任何类型的UB或有关其如何运作的规则。