std::basic_streambuf<CharT,Traits>::~basic_streambuf
virtual ~basic_streambuf(); |
Этот деструктор не оказывает никакого эффекта: члены этого basic_streambuf (указатели и локаль) разрушаются в соответствии с обычной последовательностью разрушения объектов после возврата из этого деструктора. Однако, поскольку он объявлен открытым виртуальным, он позволяет удалять объекты, производные от std::basic_streambuf, через указатель на базовый класс.
Параметры
(нет)
Пример
#include <fstream>
#include <iostream>
int main()
{
std::filebuf* fbp = new std::filebuf;
fbp->open("test.txt", std::ios_base::out);
fbp->sputn("Hello\n", 6);
std::streambuf* sbp = fbp;
delete sbp; // the file is closed, output flushed and written
std::ifstream f("test.txt");
std::cout << f.rdbuf(); // proof
}
Вывод:
Hello
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение согласно опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 54 | C++98 | эффект деструктора не был указан | указано, что эффект отсутствует |
См. также
создаёт объект basic_streambuf (защищённая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_streambuf/~basic_streambuf