Здравствуйте, Шебеко Евгений, Вы писали:
ШЕ>Если класс не содержит явного копирующего конструктора или operator=, то они создаются неявно.
ШЕ>Об этом надо помнить.
ШЕ>Допустим у нас есть класс, который содержит в себе указатель на свой буффер.
[тут был код очередного класса буфера]
Для меня new вне конструктора умного указателя (std::shared_ptr, std::unique_ptr или их аналогов из Boost) — признак плохого кода.
В прикладном коде new/delete не нужен, для буфера есть std::vector<char> или его суженный аналог:
class buffer
{
public:
buffer() {}
buffer(char const* data, size_t size) : data_(data, data + size) {}
bool empty() const { return data_.empty(); }
size_t size() const { return data_.size(); }
void resize(size_t new_size) { data_.resize(new_size); }
char const* data() const { return data_.empty()? nullptr : &data_[0]; }
char* data() { return data_.empty()? nullptr : &data_[0]; }
private:
std::vector<char> data_;
};