C++ 传递指针引用

标签 c++ pointers reference

我想通过引用将指针对象传递给函数。我不知道我做得是否正确,因为它不能按照下面的代码工作。请帮助我。

class Base
{
    public:  
    int x;
    void print()// function prints x value
    {
        cout<<x;
    }
    void call_print(Base **base) //function call print function
    {
        base->print();
    }
};
int main()
{
    Base *b = new Base; // creating pointer object
    b->call_print(&b); // passing pointer by reference
    return 0;
}

最佳答案

您通过“引用”传递对象,因为您仍然可以通过参数访问原始对象,但请注意 call_print() 中的 base > 是指向传入对象的指针,而不是实际对象。如果您想访问传入的对象,您仍然必须取消引用指针:

(*base)->print();

C++ 引入了实际引用,它们是与指针/双指针相关的语法糖。例如:

void call_print(Base*& base)
{ base->print(); }

b->call_print(b);

此外,使用双指针或引用似乎没有必要,因为您不需要以任何方式修改指针。为什么不直接获取指针本身呢?

void call_print(Base* base)
{ base->print(); }

b->call_print(b);

最后,您不需要将 b 作为参数传递给它自己的方法。指向Base对象的指针可以通过this访问:

void call_print()
{
    print(); /* or this->print() */
}

b->call_print();

关于C++ 传递指针引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27827761/

相关文章:

c++ - 使用三元运算符初始化引用变量?

C++函数参数作为引用

c++ - 使用 boost_foreach 遍历 unordered_map

c++ - Visual Studio C++ 参数缩进

c++ - 模板参数适用于不同的 STL 容器?

c - 数据设计: better to nest structures or pointers to structures?

C++ 映射、 vector 、带引用的对

c++ - 提升正则表达式 : Specific Question

c - 难以理解指针在 c 中的工作原理

c++ - 在 C++ : segmentation fault when accessing the returned array 中使用指针的数组