这些代码项目的部分: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