> Вы все перепутали - указанные Вами варианты относятся к первому методу с
> использованием указателей.
> Фактически, ссылка и указатель - одно и то же, за исключением того,
> что указатель может быть невалидный или нулевой, а ссылка ВСЕГДА! ссылается
> на объект, ее нельзя объявить без инициализации, хотя затем объект, на
> который ссылается ммылка, может быть удален.
> Так вот вопрос: как проверить валидность ссылки?Думаю Вы не первый, кто столкнулся с данной проблемой. Я для себя сделал класс-обертку над указателем и методы get,set, reset, close, кот. обрабатывают адекватно указатель.
class A{
char *i;
public:
A(){i=NULL;};
char *get(){if(i!=NULL) return i; else return NULL;}
char set(char &str){
if(str != NULL){if(i!=NULL) i = str; else{ delete[] i; i = str}}
}
char close(){delete[] i; i = NULL;}
};
но тут возникает другая проблема - методы данного класса работают с "внешним" блоком памяти, и если вызван close, а со старым указателем, что либо делают - то экзепшн не избежать. Другого выхода лично я не вижу.