c++ - 这个对象初始化是怎么回事?

标签 c++ oop mqtt

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/

相关文章:

c++ - 错误 C2059 : syntax error: 'constant' from struct member declarations

类中的c++常量函数

c++ - 使用 Paho MQTT C++ 连接到 AdafruitIO

azure - 是否可以将 MQTT 消息发送到事件中心?或者还有别的办法吗?

Android 设备需要连接到服务器 - C2DM、轮询或第三方?

c++ - 通过注册表设置程序自动运行

c++ - 将前向声明的 C-struct 定义为 C++-struct

objective-c - 为什么使用单例?

java - 关于组合与聚合的混淆(重新制定和更正)

C++ 智能指针 : sharing pointers vs. 共享数据