星球有个朋友说面试官问他一道代码分析题目,并要求他提出解决方案,然后今天简单复现一下当时的代码,你能直接看出来存在什么问题吗?如何修复它,你能给出几种方法?分别在什么场景下用哪种方法呢?
代码简单介绍如下:给出了两个类,一个是buffer管理器,底层是buffer,buffer管理器持有一个buffer指针,有一个getBuffer函数。主逻辑也很简单,就是构造BufferManager,调用getBuffer。
#include <iostream>
class Buffer {
public:
Buffer() { std::cout << "Buffer created" << std::endl; }
~Buffer() { std::cout << "Buffer destroyed" << std::endl; }
Buffer(const Buffer&) = delete;
Buffer& operator=(const Buffer&) = delete;
};
class BufferManager {
public:
BufferManager() : buffer(new Buffer()) {
std::cout << "BufferManager created" << std::endl;
}
~BufferManager() {
std::cout << "BufferManager destroyed" << std::endl;
delete buffer;
}
private:
Buffer* buffer;
};
void getBuffer(BufferManager manager) {
}
int main() {
BufferManager manager;
getBuffer(manager);
return 0;
}
揭秘答案,戳下方呀~
往期推荐: