這些代碼項目的部分:C++:初始指針
//.h文件
#ifndef IMAGEFILTER_H
#define IMAGEFILTER_H
#include "filter.h"
class ImageFilter : public Filter {
public:
ImageFilter(int _dimension);
virtual ~ImageFilter();
protected:
int* values;
};
#endif // IMAGEFILTER_H
//.cpp文件
#include "imagefilter.h"
ImageFilter::ImageFilter(int _d) : Filter(_d) {
values = new int[_d * _d];
}
ImageFilter::~ImageFilter() {
delete [] values;
}
我應該如何理解這一行: 「values = new int [_d * _d];」 ? 你能幫我嗎?
可能是一個指向堆分配緩衝區的_d * _d * sizeof(int)個字節。或者是的,如果這不是摘錄而是完整的代碼,則是未定義的行爲。 –
對不起,我的朋友們,我現在應該發佈所有相關代碼。我已經編輯了我的問題。@ songyuanyao @ Marco A @ songyuanyao –
我想說你的過濾器存儲一個二維形狀的二維圖像,邊長爲_d,存儲在int數組中,通過類似「座標x,y存儲在位置x + _d * y「(或者反過來說 - 無論如何,有點奇怪的是_d不是自己存儲的)。有問題的行初始化數組。一切都清楚了嗎?順便說一句,在C++中,只要有可能,就會比數組更喜歡std :: vector。 – Aziuth