C++:语句 'TYPE& name(&TYPE);' 是什么意思?

C++: what does statement 'TYPE& name(&TYPE);' mean?

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

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

据我所知,这句话做了一个类似于SensorManager& mgr = SensorManager::getInstance();的动作,但是这句话TYPE& name(&TYPE)到底是什么意思?这是复制构造适应单例模式的新特性吗?

SensorManager& mgr(SensorManager::getInstance()); -> 这是一个函数声明,格式如下:

return type function_name(parameter to function);

函数 mgr 接收类型 SensorManager 的实例和 returns sensorManager

实例的引用

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

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

    // ....
}

并且此 returns 是对 SensorManager 的单例实例的引用。然后使用此引用创建引用变量 mgr。

所以是的:

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

等同于

SensorManager& mgr = SensorManager::getInstance();