我正在尝试为我的Arduino编写程序,但是当我将一个Item
对象传递给另一个Holder
对象时,我不明白发生了什么。我构建了一个简单的示例:
class Item {
public:
int property;
Item() {
Serial.println("parameterless constructor called");
this->property = 2;
}
Item(int property) {
this->property = property;
Serial.println("right constructor called");
}
};
class Holder {
public:
Item someitem;
Holder(Item& someitem) {
this->someitem = someitem;
}
};
void setup() {
Serial.begin(9600);
Item someitem = Item(1);
Serial.println(someitem.property);
Holder hold = Holder(someitem);
Serial.println(hold.someitem.property);
}
void loop() {
}
控制台上的输出为:
right constructor called
1
parameterless constructor called
1
我不理解为什么会首先调用无参构造函数(在我的理解中,我并没有创建一个新对象),也不明白为什么它既不改变当前对象也不创建一个新对象。编译器禁止省略无参构造函数。