一个实现缓冲区BUF管理的模板类
template<class T> classSharedBuffer {public:
typedef T*ObjectPointer;
SharedBuffer(const SharedBuffer&rhs):
buffer_size(rhs.buffer_size), buffer_pointer(nullptr)
{
create_buffer();
memcpy(buffer_pointer, rhs.buffer_pointer,sizeof(T) *buffer_size);
}
SharedBuffer& operator= (const SharedBuffer&rhs) {if(this == &rhs) {return *this;
}
buffer_size=rhs.buffer_size;if(buffer_pointer) {delete[] buffer_pointer;
buffer_pointer=nullptr;
}
create_buffer();
memcpy(buffer_pointer, rhs.buffer_pointer,sizeof(T) *buffer_size);
}explicit SharedBuffer(const unsigned shortsize):
buffer_size(size), buffer_pointer(nullptr)
{
create_buffer();
}
ObjectPointeroperator()()const{returnbuffer_pointer;
}~SharedBuffer() {if(buffer_pointer) {delete[] buffer_pointer;
buffer_pointer=nullptr;
}
}const unsigned short size() const{returnbuffer_size;
}protected:voidcreate_buffer() {if(nullptr ==buffer_pointer) {
buffer_pointer= newT[buffer_size];
}
buffer_zero();
}voidbuffer_zero() {if(nullptr !=buffer_pointer) {
memset(buffer_pointer,0x00, sizeof(T) *buffer_size);
}
}private:
unsignedshortbuffer_size;
ObjectPointer buffer_pointer;
};