【发布时间】:2019-02-03 18:18:45
【问题描述】:
考虑这个类:
class Packet {
public:
Packet();
~Packet();
void allocateBuffer(unsigned int size);
void deallocateBuffer();
char* getBuffer() const;
private:
char* buffer;
};
使用以下方法:
Packet::Packet():
buffer(NULL) {
std::cout << "[DEBUG] Construct Packet class..." << std::endl;
}
void Packet::allocateBuffer(unsigned int size) {
if (!(buffer)) {
buffer = new char[size];
#ifdef DEBUG
std::cout << "Allocate buffer memory..." << std::endl;
#endif
}
}
void Packet::deallocateBuffer() {
if (buffer) {
delete[] buffer;
buffer = NULL;
#ifdef DEBUG
std::cout << "Deallocate buffer memory..." << std::endl;
#endif
}
}
这里有一些问题:
- 因为在 C 中指针等于
NULL如果它们不指向任何内容,那么上面列出的实现是处理类内部指针的好方法吗?我要求这样做是因为如果buffer变量未在构造函数中初始化,则默认情况下似乎会为其分配一个奇怪的\v值。 - 如果没有,您能提出更优雅的方法吗?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。