LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

const является типом, поскольку ограничивает набор операций... Вполне логично

так же можно сказать что и ссылка является типом, поскольку ограничивает набор операций по сравнению с указателями — не дает делать инкремент, декремент и произвольные сложения-вычитания

тут конечно есть разница в том, что ссылка вводит новый синтаксис, но она не очень существенна — можно рассмотреть язык, почти эквивалентный си, у которого инкремент, декремент и произвольные сложения-вычитания производились бы не ++, - - , +=, а .increment, .decrement, .move_by, и произвольные указатели можно было бы использовать без разыменования, почти как сейчас используются указатели на функции:

int a[5]={0, 1, 2, 3, 4};
int* ptr2 = &(a[2]);
int* ptr1 = ptr2.decrement();
ptr2 = &(a[2]);
int* ptr3 = ptr2.increment();
printf("%d", ptr3+ptr1); /* печатает 4, т.е. 3+1 */ 
printf("%d", ptr3+1); /* тоже печатает 4, т.е. 3+1 */ 
printf("%d", ptr3.raw_value()); /* печатает допустим 2384098780, т.е. значение указателя как целого */ 

Исправление www_linux_org_ru, :

const является типом, поскольку ограничивает набор операций... Вполне логично

так же можно сказать что и ссылка является типом, поскольку ограничивает набор операций по сравнению с указателями — не дает делать инкремент, декремент и произвольные сложения-вычитания

тут конечно есть разница в том, что ссылка вводит новый синтаксис, но она не очень существенна — можно рассмотреть язык, почти эквивалентный си, у которого инкремент, декремент и произвольные сложения-вычитания производились бы не ++, - - , +=, а .increment, .decrement, .move_by, и произвольные указатели можно было бы использовать без разыменования, почти как сейчас используются указатели на функции:

int a[5]={0, 1, 2, 3, 4};
int* ptr2 = &(a[2]);
int* ptr1 = ptr2.decrement();
ptr2 = &(a[2]);
int* ptr3 = ptr2.increment();
printf("%d", ptr3+ptr1); /* печатает 4, т.е. 3+1 */ 
printf("%d", ptr3+1); /* тоже печатает 4, т.е. 3+1 */ 
printf("%d", ptr3.raw_value()); /* печатает допустим 2384098787, т.е. значение указателя как целого */ 

Исправление www_linux_org_ru, :

const является типом, поскольку ограничивает набор операций... Вполне логично

так же можно сказать что и ссылка является типом, поскольку ограничивает набор операций по сравнению с указателями — не дает делать инкремент, декремент и произвольные сложения-вычитания

тут конечно есть разница в том, что ссылка вводит новый синтаксис, но она не очень существенна — можно рассмотреть язык, почти эквивалентный си, у которого инкремент, декремент и произвольные сложения-вычитания производились бы не ++, - - , +=, а .increment, .decrement, .move_by, и произвольные указатели можно было бы использовать без разыменования, почти как сейчас используются указатели на функции:

int a[5]={0, 1, 2, 3, 4};
int* ptr2 = &(a[2]);
int* ptr1 = ptr2.decrement();
int* ptr3 = ptr2.increment();
printf("%d", ptr3+ptr1); /* печатает 4, т.е. 3+1 */ 
printf("%d", ptr3+1); /* тоже печатает 4, т.е. 3+1 */ 
printf("%d", ptr3.raw_value()); /* печатает допустим 2384098787, т.е. значение указателя как целого */ 

Исправление www_linux_org_ru, :

const является типом, поскольку ограничивает набор операций... Вполне логично

так же можно сказать что и ссылка является типом, поскольку ограничивает набор операций по сравнению с указателями — не дает делать инкремент, декремент и произвольные сложения-вычитания

тут конечно есть разница в том, что ссылка вводит новый синтаксис, но она не очень существенна — можно рассмотреть язык, почти эквивалентный си, у которого инкремент, декремент и произвольные сложения-вычитания производились бы не ++, - - , +=, а .increment, .decrement, .move_by, и произвольные указатели можно было бы использовать без разыменования, почти как сейчас используются указатели на функции:

int a[5]={0, 1, 2, 3, 4};
int* ptr2 = &(a[2]);
int* ptr1 = ptr2.decrement();
int* ptr3 = ptr2.increment();
printf("%d", ptr3+ptr1); /* печатает 4, т.е. 3+1 */ 
printf("%d", ptr3+1); /* тоже печатает 4, т.е. 3+1 */ 
printf("%d", ptr3.raw_value); /* печатает допустим 2384098787, т.е. значение указателя как целого */ 

Исходная версия www_linux_org_ru, :

const является типом, поскольку ограничивает набор операций... Вполне логично

так же можно сказать что и ссылка является типом, поскольку ограничивает набор операций по сравнению с указателями — не дает делать инкремент, декремент и произвольные сложения-вычитания

тут конечно есть разница в том, что ссылка вводит новый синтаксис, но она не очень существенна — можно рассмотреть язык, почти эквивалентный си, у которого инкремент, декремент и произвольные сложения-вычитания производились бы не ++, - - , +=, а .increment, .decrement, .move_by, и произвольные указатели можно было бы использовать без разыменования, почти как сейчас используются указатели на функции:

int a[5]={0, 1, 2, 3, 4};
int* ptr2 = &(a[2]);
int* ptr1 = ptr2.decrement();
int* ptr3 = ptr2.increment();
printf("%d", ptr3+ptr1); /* печатает 4, т.е. 3+1 */ 
printf("%d", ptr3+1); /* тоже печатает 4, т.е. 3+1 */ 
printf("%d", ptr3.raw_value); /* печатает значение указателя как целого */