(no subject)

Date: 2004-06-03 11:30 pm (UTC)
From: [identity profile] msh.livejournal.com
В perl давно скалярный тип - nullable, вечный источник багов у программистов, которые null и 0 путают

(no subject)

Date: 2004-06-04 12:04 am (UTC)
From: [identity profile] 109.livejournal.com
не, ну тут умнее - по умолчанию не nullable, а если ты пишешь Nullable (что то же самое, что int?), то считается, что ты знаешь, что делаешь :-)

с нетерпением ожидаю появления non-nullable reference types.

(no subject)

Date: 2004-06-04 05:44 am (UTC)
From: [identity profile] caseq.livejournal.com
> с нетерпением ожидаю появления non-nullable reference types.

Huh?! Как сам-то?

(no subject)

Date: 2004-06-04 01:08 pm (UTC)
From: [identity profile] 109.livejournal.com
да что сам-то... всё по-старому. а чего huh?
(deleted comment)

(no subject)

Date: 2004-06-05 08:08 pm (UTC)
From: [identity profile] 109.livejournal.com
разве компилятор c++ поймает передачу null в функцию, принимающую аргумент типа MyClass&?

речь-то идёт о compile-time safety.

(no subject)

Date: 2004-06-07 06:05 am (UTC)
From: [identity profile] caseq.livejournal.com
Ну, давай сначала определимся, как ты его туда будешь передавать ;-) То есть понятно что C++ в наследие от C остались всякие unsafe type casts и можно написать что-то типа *(MyClass *)NULL, но это уже по-моему для тех кто целенаправленно себе хочет ногу отстрелить ;-)

(no subject)

Date: 2004-06-07 12:29 pm (UTC)
From: [identity profile] 109.livejournal.com
а разве нельзя написать MyClass* my = null; ?

я не издеваюсь, а на самом деле не помню уже... и если нельзя, то просто MyClass* my; разве не null содержит?

(no subject)

Date: 2004-06-07 12:35 pm (UTC)
From: [identity profile] caseq.livejournal.com
Написать так можно (разве что NULL большими буквами), но это -- указатель а не ссылка (и во втором случае там будет мусор, а не NULL). А ссылку можно только сразу инициализировать:
MyClass a;
MyClass &my=a;
Попытка написать просто MyClass &my; выдаст ошибку компиляции.

(no subject)

Date: 2004-06-07 12:58 pm (UTC)
From: [identity profile] 109.livejournal.com
Написать так можно (разве что NULL большими буквами)

о! а передать его потом в функцию, принимающую MyClass& - можно?

во втором случае там будет мусор, а не NULL

всегда? а если это не локальная переменная, а член класса? а если static член?

(no subject)

Date: 2004-06-07 01:03 pm (UTC)
From: [identity profile] caseq.livejournal.com

>> Написать так можно (разве что NULL большими буквами)

> о! а передать его потом в функцию, принимающую MyClass& - можно?

Можно. Через разименование. Но такие вещи уже в принципе не ловятся at compile time -- в одном месте запихать в переменную условно некорректное значение, а в другом его использовать ;-)


> всегда? а если это не локальная переменная, а член класса? а если static член?


Ну, если static -- будет NULL. Но это редкий случай ;-)

(no subject)

Date: 2004-06-07 02:11 pm (UTC)
From: [identity profile] 109.livejournal.com
Можно. Через разименование.

ну вот видишь. то есть в процессе нормального использования.

Но такие вещи уже в принципе не ловятся at compile time

ну как же. типизованный же пойнтер. вводится специальный модификатор типа, который будет запрещать нулевые и неинициализированные пойнтеры, и все дела. ты сходи по сслыке-то.

запихать в переменную условно некорректное значение

именно. если у тебя по семантике для этого пойнтерного типа null - это некорректное значение, то это надо явно объявить. пусть компилятор ошибки ловит.

(no subject)

Date: 2004-06-05 11:17 am (UTC)
From: [identity profile] caseq.livejournal.com
Тьфу, пардон, я по ссылке не пошел и как-то не подумал, что это все про C# ;-)

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags