Написать так можно (разве что NULL большими буквами), но это -- указатель а не ссылка (и во втором случае там будет мусор, а не NULL). А ссылку можно только сразу инициализировать: MyClass a; MyClass &my=a; Попытка написать просто MyClass &my; выдаст ошибку компиляции.
>> Написать так можно (разве что NULL большими буквами)
> о! а передать его потом в функцию, принимающую MyClass& - можно?
Можно. Через разименование. Но такие вещи уже в принципе не ловятся at compile time -- в одном месте запихать в переменную условно некорректное значение, а в другом его использовать ;-)
> всегда? а если это не локальная переменная, а член класса? а если static член?
Ну, если static -- будет NULL. Но это редкий случай ;-)
ну вот видишь. то есть в процессе нормального использования.
Но такие вещи уже в принципе не ловятся at compile time
ну как же. типизованный же пойнтер. вводится специальный модификатор типа, который будет запрещать нулевые и неинициализированные пойнтеры, и все дела. ты сходи по сслыке-то.
запихать в переменную условно некорректное значение
именно. если у тебя по семантике для этого пойнтерного типа null - это некорректное значение, то это надо явно объявить. пусть компилятор ошибки ловит.
(no subject)
Date: 2004-06-07 12:35 pm (UTC)MyClass a;
MyClass &my=a;
Попытка написать просто MyClass &my; выдаст ошибку компиляции.
(no subject)
Date: 2004-06-07 12:58 pm (UTC)о! а передать его потом в функцию, принимающую MyClass& - можно?
во втором случае там будет мусор, а не NULL
всегда? а если это не локальная переменная, а член класса? а если static член?
(no subject)
Date: 2004-06-07 01:03 pm (UTC)>> Написать так можно (разве что NULL большими буквами)
> о! а передать его потом в функцию, принимающую MyClass& - можно?
Можно. Через разименование. Но такие вещи уже в принципе не ловятся at compile time -- в одном месте запихать в переменную условно некорректное значение, а в другом его использовать ;-)
> всегда? а если это не локальная переменная, а член класса? а если static член?
Ну, если static -- будет NULL. Но это редкий случай ;-)
(no subject)
Date: 2004-06-07 02:11 pm (UTC)ну вот видишь. то есть в процессе нормального использования.
Но такие вещи уже в принципе не ловятся at compile time
ну как же. типизованный же пойнтер. вводится специальный модификатор типа, который будет запрещать нулевые и неинициализированные пойнтеры, и все дела. ты сходи по сслыке-то.
запихать в переменную условно некорректное значение
именно. если у тебя по семантике для этого пойнтерного типа null - это некорректное значение, то это надо явно объявить. пусть компилятор ошибки ловит.