我正在使用此类作为传感器。 每个传感器都有多种功能(温度和湿度......)。 我需要访问传感器的输出值之外的一些属性。
class Sensor {
public:
int id;
int sensorTypeVal;
const char* name;
SensorReading reading;
// Constructor to initialize Sensor with id, type, and name
Sensor(int id, int type, const char* name)
: id(id), sensorTypeVal(type), name(name) {} // Initialize reading with default constructor
// Constructor to initialize Sensor with id, type, name, and a SensorReading
Sensor(int id, int type, const char* name, const SensorReading& reading)
: id(id), sensorTypeVal(type), name(name), reading(reading) {}
// Method to update the sensor reading
void updateReading(const SensorReading& newReading) {
reading = newReading;
}
};
对 C++ 相当陌生,所以想知道这里的正常方法是什么。 我发现了这个为什么我应该使用指针而不是对象本身? 这似乎比我的问题更上一层楼。 我不想进入传感器“包装”模式并开始跨层复制属性。 是否建议在 init 中将引用传递给传感器,或者将传感器对象移动到类内部并将其抽象出来?
或者还有其他的方式来组成吗?
传感器是一个类,通常有一个库,其中“传感器” 创建如 Adafruit_AHTX0 aht;我也可以像这样创建一个参考 Adafruit_AHTX0& raht = aht;创建“传感器”是否更好? 主程序中类外的引用,或者有私有的 类中初始化 Adafruit_AHTX0 aht 的方法;
当您
Adafruit_AHTX0 aht;
创建类的Adafruit_AHTX0
实例时,即为该类分配内存,并且将调用默认构造函数。后者创建对类实例的引用(别名)
Adafruit_AHTX0.
创建类实例的位置取决于程序的需要,但如果有非常重要的影响:
范围 | 内存段 | 一生 | 构造函数调用 | 访问 |
---|---|---|---|---|
全球 | main() 开始之前 | static )。 |
||
本地(堆栈) | ||||
动态(堆) | new 被呼叫时 | |||
静态(本地) | ||||
静态(全局) | main() 开始之前 |