Re[12]: wstring как аргумент ф-ции
От: VoidEx  
Дата: 17.11.08 13:50
Оценка: +1
Здравствуйте, 8bit, Вы писали:

8>Здравствуйте, VoidEx, Вы писали:


8>>>просто надо знать как typedef работает.

VE>>Это не аргумент. Аргумент то, что при другом способе записи работа typedef становится очевидной

8>Вот не разу это не так. Не юлите.


Я бы вас упрекнул в незнании смысла слова "юлить", но не буду.

8>По вашей логике получается что если человек написал "typedef PCHAR const CPCHAR",

8>то для него будет очевидным что "typedef const PCHAR CPCHAR" тоже самое?

Нет. Для него будет очевидным, что вверху записано "typedef char * const CPCHAR".
При незнании тайпдефа внизу он увидит "typedef const char * CPCHAR" и ошибётся. Соот-но верхний вариант в заблуждение его не введёт.
Это первый, спорный и субъективный аргумент.
А есть второй (тоже субъективный, разумеется):
const char * const p1; // константный указатель на чар константный
char const * const p2; // константный указатель на константный чар

Я привык читать так, как внизу, хотя ясно, что в достаточно нетривиальных случаях это не прокатит,
но в своё время я изменил способ записи именно поэтому. Потому что неясно почему то слева надо const писать, то справа.
А так всегда справа. И от метода тоже справа.

8>Это не так. Если человек не понимает как работает typedef , то ничего очевидного тут нет,

8>как const не пиши. Это просто совпадение, что в первом варианте ваша точка зрения совпадает
8>с тем как работает typedef

К сожалению нет в близкой досягаемости людей, на которых можно было бы провести опыт, но
текстуальная замена запоминается и понимается почему-то проще, хотя и не верна в общем случае.
Re[13]: wstring как аргумент ф-ции
От: 8bit  
Дата: 17.11.08 15:07
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Я привык читать так, как внизу

Да, у Страуструпа так и написано: "Некоторые люди читают такие обьявления справа на лево"

Про typedef аргумент не очень, потому что человек должен знать как он работает,
а то получается что человек возможно не делает ошибки в обьявлении типа, не потому
что он понимает как это работает, а потому что он пишет const ровно перед звездочкой.

В итоге получается есть только ваш субьективный аргумент:
"Я привык читать так" супротив моего мнения, что "это не привычно для большинства",
и если код пишется не только для себя, то другим может быть не легко читать такой код.

>Потому что неясно почему то слева надо const писать, то справа.

Почему не ясно?
Цитирую: "Оператор обьявления, который делает указатель константой, — это *const.
Нет оператора обьявления const*, поэтому ключевое слово const слева от * интерпретируется
как часть базового типа."

Re[8]: wstring как аргумент ф-ции
От: igna Россия  
Дата: 17.11.08 15:33
Оценка:
Здравствуйте, 8bit, Вы писали:

8>Это же в каждом таком месте думать приходится. Что это? Указатель на константный объект или константный указатель?

8>А когда написано "const wchar_t * cstr" то такое читается автоматом.

Причина того, что думать приходится, вовсе не в том, что способ записи объективно хуже, просто последний тебе непривычен. Объективно он наоборот лучше, аргументы тут уже приводили, можешь еще Александреску почитать.
Re[14]: wstring как аргумент ф-ции
От: VoidEx  
Дата: 17.11.08 20:03
Оценка:
Здравствуйте, 8bit, Вы писали:

>>Потому что неясно почему то слева надо const писать, то справа.

8>Почему не ясно?
8>Цитирую: "Оператор обьявления, который делает указатель константой, — это *const.
8>Нет оператора обьявления const*, поэтому ключевое слово const слева от * интерпретируется
8>как часть базового типа."

Сложно как-то. У меня проще. Слева от const то, что константно. Если слева *, то указатель константен. Если int, то само число.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.