我想创建一个数组,其中每个元素都可以从int
或float
设置(这些特定类型仅是示例)。
因此,我继续使用两个构造函数制作了一个类:
class ScaledNumber {
private:
int scaled_number;
public:
ScaledNumber(int number);
ScaledNumber(float number);
};
ScaledNumber::ScaledNumber(int number) {
scaled_number = number * 1000;
}
ScaledNumber::ScaledNumber(float number) {
scaled_number = (int)(number * 1000);
}
当我使用此类的单个变量时,此方法工作正常。但是现在我想创建一个此类对象的数组。我必须添加第三个构造函数才能使声明正常工作:
ScaledNumber::ScaledNumber() {}
ScaledNumber numbers[5];
现在,如果要重新分配例如
numbers[3]
,是否可以以某种方式使用构造函数,还是必须添加set()
方法或类似方法? 最佳答案
我可以以某种方式利用构造函数
您可以简单地使用:
ScaledNumber numbers[5];
numbers[0] = 20;
numbers[1] = 30.2f;
进行分配之前,编译器将使用适当的构造函数。最后两行由编译器翻译为:
numbers[0] = ScaledNumber(20);
numbers[1] = ScaledNumber(30.2f);