2016-11-18 80 views
-5

这些代码项目的部分: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];” ? 你能帮我吗?

+0

可能是一个指向堆分配缓冲区的_d * _d * sizeof(int)个字节。或者是的,如果这不是摘录而是完整的代码,则是未定义的行为。 –

+0

对不起,我的朋友们,我现在应该发布所有相关代码。我已经编辑了我的问题。@ songyuanyao @ Marco A @ songyuanyao –

+0

我想说你的过滤器存储一个二维形状的二维图像,边长为_d,存储在int数组中,通过类似“坐标x,y存储在位置x + _d * y“(或者反过来说 - 无论如何,有点奇怪的是_d不是自己存储的)。有问题的行初始化数组。一切都清楚了吗?顺便说一句,在C++中,只要有可能,就会比数组更喜欢std :: vector。 – Aziuth

回答

1

values = new int[_d * _d];是什么意思?

保留_d * _d动态在免费商店中排序的整数(可能每个4字节)。换句话说,您已经预留了一组integers_d * _d项目,可以在以后以多种方式使用。

+1

你正在尝试在C++中进行图像处理,而你甚至不知道动态数组是什么..可能你需要从较低级别开始,找到一些很好的C++书籍(绝对没有冒犯)。我已经回答了你的问题。 –

+1

很高兴为您及时回复!我绝对同意你的话,我也是一只绿色的小鸟。刚才我用'*'作为指针的符号,实际上,它意味着乘法。非常感谢您的建议! –