c++ 简化位图图像操作

程序功能描述: 把每有个字符看成是二进制位数据,程序提供给这些字符组成的图像加边框操作、横向合并操作、纵向合并操作。

相关问题:c++不直接支持二维数组,可用数组的数组来实现。vc6.0在类申明友元函数的时候,须先前置申明类和作为友元的函数(针对<<的重载)。

#include using namespace std; //在vc6.0中需要先申明类和友元函数,否则<<重载会报错// class Picture; ostream& operator<<(ostream&,const Picture&); Picture frame(const Picture&); Picture operator&(const Picture&,const Picture&); Picture operator|(const Picture&,const Picture&); class Picture { friend ostream& operator<<(ostream&,const Picture&); friend Picture frame(const Picture&); friend Picture operator&(const Picture&,const Picture&); friend Picture operator|(const Picture&,const Picture&); public: int height,width; Picture(); Picture(const char* const*,int); Picture(const Picture&); ~Picture(); Picture& operator=(const Picture&); char& position(int row,int col){ return data[row * width + col]; }///允许作为左值,可写 char position(int row,int col) const{ return data[row * width + col]; }////返回当前位置的值 private: char* data; void copyblock(int ,int ,const Picture&); void clear(int,int,int,int); void init(int ,int); static int max(int ,int); }; //当构建的图为空时,高度宽度为零,数据指针为空// Picture::Picture() : height(0),width(0),data(0){} //用于比较出字符数组中最常的长度,用以分配内存// int Picture::max(int m, int n) { return m>n?m:n; } //分配内存并且将指针赋给data同时也保存了长度和宽度// void Picture::init(int h, int w) { height = h; width = w; data = new char[height * width]; } //将array字符数组中的字符复制到Picture类对象的data中// Picture::Picture(const char* const* array, int n) { int w = 0; int i; for(i=0; i

 

最后一个输出的结果:

你可能感兴趣的:(c++,delete,spring,c,class)