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



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

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

我承认,这句话做了一个像SensorManager& mgr = SensorManager::getInstance();一样的动作,但这句话到底是什么意思TYPE& name(&TYPE)?这是复制构造的新功能,以适应单例模式吗?

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

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

并且这将返回对传感器管理器的单一实例的引用。然后,此引用用于创建引用变量 mgr。

所以是的,这条线:

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

相当于

SensorManager& mgr = SensorManager::getInstance();

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

返回类型 function_name(参数到函数);

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

最新更新