В моих представлениях об операторе new
должны быть некоторые недостатки.
Вот соответствующая часть кода:
#include <queue>
using namespace std;
class MovingAverage {
public:
/** Initialize your data structure here. */
MovingAverage(int size) {
queue<double> q;
int max_size = size;
int curr_size = 0;
double sum = 0.0;
}
private:
queue<double> q;
int curr_size;
int max_size;
double sum;
};
int main(){
MovingAverage * m = new MovingAverage(3); // This line does not work as expected!
return 0;
}
В приведенном выше коде класс MovingAverage
имеет конструктор MovingAverage(int size)
, который устанавливает две из его переменных-членов curr_size
и sum
в ноль.
Однако строка MovingAverage * m = new MovingAverage(3);
в главной функции не возвращает указатель на экземпляр класса с двумя членами curr_size
и sum
, равными нулю.
Вместо этого отладчик показывает, что созданный объект имеет curr_size = 1953853300
и max_size = 6647401
.
Как сделать так, чтобы оператор new
вызывал конструктор, который я написал?