C++要点笔记(21)——引用(reference)

Reference可以看做是一个变量的别名:

int x;
int& foo = x;

Reference的一个重要用途是用在函数传参中:

int workWithClass( const MyClass& a_class_object )
{
}

在上述函数中,因为参数是引用,所以省去了copy参数的工作;并且由于有const修饰,所以不会对参数所指向的对象进行修改。

一旦reference绑定了一个object,它不能再绑定其它的object(参考stackoverflow)。

Polymorphisms works both for pointers and references:

class instrument {
public:
    virtual void play(){}
};

class drum : public instrument {
public:
    virtual void play() override{
        std::cout << "dum, dum" << std::endl;
    }
};

class piano : public instrument {
public:
    virtual void play() override{
        std::cout << "pling" << std::endl;
    }
};

int main (){
    instrument i;
    piano p;
    drum d;

    instrument &pi = i;
    pi.play();  // -

    instrument &pp = p;
    pp.play();  // pling

    instrument &pd = d;
    pd.play();  // dum, dum
}

输出:

pling                                                                                                                              
dum, dum 

参考资料:
C++ References

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.