Почему в классы потоков C ++ добавлена ​​функция преобразования оператора void * ()?

Есть функция конвертацииoperator void*() const в C ++ потоковые классы. так что все объекты потока могут быть неявно преобразованы вvoid*, Во время взаимодействия с программистами на SO они предлагают мнене использоватьvoid* если у вас нет веских причин использовать его.void* это метод удаления безопасности типов и проверки ошибок. Таким образом, из-за наличия этой функции преобразования следующая программа является абсолютно действительной. Это недостаток вC ++ стандартная библиотека.

#include <iostream>
int main()
{
       delete std::cout;
       delete std::cin;
}

Посмотреть демоВот.

Вышеприведенная программа действительна на C ++ 03, но завершается неудачно при компиляции в C ++ 11 и более поздних компиляторах, поскольку эта функция преобразования удалена. Но вопрос в том, почему это было частью стандартной библиотеки C ++, если это опасно? Какова была цель разрешения преобразования потоковых объектов вvoid*? Какая польза от этого?

Ответы на вопрос(2)

Ваш ответ на вопрос