C ++:声明'TYPE&名称(安培; TYPE);”意思?

时间:2016-03-10 11:27:20

标签: c++ c++11 reference copy-constructor

由于我对c ++的新功能不是很熟悉,这个SensorManager& mgr(SensorManager::getInstance());语句让我很困惑,我认为这是一种变量陈述,但不确定。我相信此mgr不是函数,因为以下语句sp<SensorEventQueue> queue(mgr.createEventQueue());使用mgr作为对象。

SensorManager::getInstance()返回SensorManager类型实例的引用,但SensorManager类中没有构造函数来接收引用。

我承认,这个陈述做了像SensorManager& mgr = SensorManager::getInstance();这样的动作,但这个陈述TYPE& name(&TYPE)究竟是什么意思呢?这是复制构造的新特征,以适应单例模式吗?

2 个答案:

答案 0 :(得分:1)

我读取你提供的代码的方式是有一个静态方法SensorManager :: getInstance()声明如下:

class SensorManager
{
    // ....
    public:
        static SensorManager& getInstance();

    // ....
}

并返回对SensorManager的单例实例的引用。然后使用该引用来创建引用变量mgr。

所以是这一行:

SensorManager& mgr(SensorManager::getInstance());

相当于

SensorManager& mgr = SensorManager::getInstance();

答案 1 :(得分:0)

SensorManager& mgr(SensorManager::getInstance()); - &gt;这是以下格式的函数声明:

  

返回类型function_name(参数to function);

函数mgr接收类型为SensorManager的实例,并返回sensorManager

实例的引用