抱歉,标题令人困惑,不知道该为标题加上什么。
我有这个功能:

static void smooth5(IntVector*& v)
{
    IntVector* tmp = new IntVector();
    for(int i=0; i<v->size(); i+=2)
        tmp->push_back(v->at(i));
    delete v;
    v = tmp;
}

我主要是这样做的:
IntVector* v = new IntVector();

v->push_back(0);
v->push_back(1);
v->push_back(2);
v->push_back(3);

smooth5(v);

//print the contents of v

当我打印v的内容时,输出为0 2。
但是我不明白
IntVector*& v

真正意味着v是指向堆上对象的指针。有人可以解释一下吗?

最佳答案

IntVector*&声明对指针的引用。将此用作函数参数允许smooth5修改调用者的v副本。

它类似于将指针传递给IntVector**指针,但更具可读性。

在您的示例中,smooth5删除调用方的IntVector,并将其指向其tmp变量。

关于c++ - 指向引用/地址参数的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14649235/

10-10 00:56