Собственно надо это именно потому, чтобы выяснить как это всё работает, и почему нет метода для char *.
Как нету? Есть ведь.
Да и потом разве не удобство скрыть все проверки корректности ввода вывода в отдельном классе и сделать операторы ввода/вывода немногословными?
Может быть удобно... но ИМХО наследоваться от ifstream - это из пушки по воробьям. Если ты хочешь отделить
обработку ошибок от основного кода, то, например, можно настроить поток так, чтобы он кидал исключения в случае ошибки ввода (функцией exceptions) или просто все это делать в отдельной функции input_int(). Хотя дело вкуса, может быть.