MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
与更传统的 client(mqttNetwork);
或类似 MQTTNetwork *mqttNetwork = new mqttNetwork();
相比,有人能解释一下这里做了什么吗?
我还想完成的是将该行代码修改为我可以初始化的东西,类似于 MQTTNetwork *mqttNetwork = new mqttNetwork();
这样我就可以分配一个新对象到来自循环内部的指针,因为此代码将用于具有无限循环的嵌入式应用程序,其中对象需要在循环迭代之间保持不变。
最佳答案
好吧,上述方法和指针方法之间的基本区别在于,指针分配在堆上,而对象 client
位于堆栈上。
如果 client
是在循环内定义和初始化的,那么每次循环后都会调用析构函数,并且每次都会新建对象。
由于对象需要在循环迭代之间保持不变,client
可能在循环外定义。在这种情况下,您可能需要查看您正在使用的库是否提供了 clear()
或 reset()
函数以及一种将新数据填充到其中的方法物体。这样您就可以一直使用同一个对象并只分配新数据。
注意:如果您使用的是指针方法并且可能的话,我会考虑使用智能指针。
关于c++ - 这个对象初始化是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713666/