|
|
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
blindedISO C++ forbids assigment of arrayну про присвоение никто и не говорил, хотели инициализацию. Вот кстати ещё цитатка manIf the entity is of const-qualified type or reference type, or of a (possibly cv-qualified) POD class type (or array thereof) containing (directly or indirectly) a member of a const-qualified type, the program is ill-formed. Интересно, зачем сделали разную семантику инициализации полей объектов и обычных переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 11:57 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
ЛюкСкайУокерЕсли честно, в моем случае потребности в не-static нет (класс все равно singleton:)) Стало интересно, не ожидал что С++ не поддерживает такой синтаксис. Наверно если понадобится в каждом экземпляре свой массив указателей, который не должен модифицироваться, то проще наваять класс массива и агрегировать указатель на константный объект этого класса. Проще - не трогать то, что нельзя! (шутка). Вообще Строуструп очень часто повторяет одну мысль (в разных вариантах и по разным поводам) суть которой следующая: при разработке языка С++ исключались те черты, которые могли бы повлечь дополнительные расходы памяти или времени выполнения. И если посмотреть на машинный код после компиляции, то действительно нет ничего лишнего, всё компактно и просто. Я имею в виду компиляторы классического С++, а не всяческие современные IDE, Studio и т. п. Вот ещё пара цитат из него: "Язык С++ не пытается ни обеспечить максимально развитого управления защитой, ни поддержать все мыслимые механизмы для выражения всевозможной защиты. Такие средства сделали бы язык гораздо более сложным, нежели это есть сейчас, а он и так обеспечивает весьма высокий уровень выразительности." "Механизмы управления доступом в С++ обеспечивают защиту от случайного, а НЕ от преднамеренного доступа. ... Эти возможности относятся к проблемам окружения и дисциплины программирования, но НЕ к проблемам языка." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 12:03 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
maXmoИнтересно, зачем сделали разную семантику инициализации полей объектов и обычных переменных. Да просто захотелось :-) Б. Строуструп цитата: Запись =выражение наиболее естественна при инициализации простых переменных, особенно - переменных арифметического типа и указателей. Запись {список-инициализаций} хорошо служит при инициализации массивов и структур данных. Запись (список-выражений) кажется наиболее подходящей при создании объекта некоторого типа, который не подходит под стандарты для арифметических типов. конец цитаты. Кстати для обычных переменных допустимы все виды присваиваний: int i = 5; int i = {5}; int i (5); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 12:43 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
Наверно "истинно правильно" даже так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 14:05 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
ну вообще-то истинно праильно так int i(5); все остальное компилер неявно приведет к этому виду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 14:38 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
ЛюкСкайУокер пишет: > синтаксис. Наверно если понадобится в каждом экземпляре свой массив > указателей, который не должен модифицироваться, то проще наваять класс > массива и агрегировать указатель на константный объект этого класса. Да можно нестатический УКАЗАТЕЛЬ на массив иметь. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 17:14 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
ЛюкСкайУокерНаверно "истинно правильно" даже так: Код: plaintext 1. Начало этого топика заставило меня разбудить мои мозги, уже много лет купающиеся в удобной среде визуальной разработки, где нет и намёка на появление таких крамольных мыслей (это я всё про первый пост). Но вот этот пост... как бы это помягче... Неужели учебника даже не читали? А начало было интересное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 17:16 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
Всего не упомнишь.. я знаю много профессиональных программистов, которые с ходу не скажут что такое explicit, volatile или mutable, и прекрасно при этом живут) А в случае Код: plaintext 1. Код: plaintext 1. Ну а первая запись - передача параметров конструктору... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 06:48 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
ЛюкСкайУокерВсего не упомнишь.. я знаю много профессиональных программистов, которые с ходу не скажут что такое explicit, volatile или mutable, и прекрасно при этом живут)Согласен. Не хотел обидеть. ЛюкСкайУокерА в случае Код: plaintext 1. Код: plaintext 1. Ну а первая запись - передача параметров конструктору...Да конечно же первая запись имеет право быть написана и поймётся компилятором. Только получилось "масло масляное". Сначала создаём объект типа int, инициализированный значением 5, и его присваиваем int'у x. Вместо того, чтобы сразу создать объект x типа int, инициализированный значением 5. Код: plaintext И всё-таки, уважаемый ЛюкСкайУокер , скажите (если не секрет) зачем понадобилось Код: plaintext 1. 2. Прямо маниакальная боязнь потерять или затереть эти строки... Опять-таки не обижайтесь! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 08:50 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
Ну что вы, без обид) Я уже писал, что мне понадобилась конструкция без константности указателей, а константность строк - действительно для защиты от модификации. Покольку класс по паттерну синглетон, потом я вообще так сделал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 10:01 |
|
||
|
Вопрос синтаксиса
|
|||
|---|---|---|---|
|
#18+
LisFox ЛюкСкайУокер Код: plaintext 1. Только получилось "масло масляное". Сначала создаём объект типа int, инициализированный значением 5, и его присваиваем int'у x. Вместо того, чтобы сразу создать объект x типа int, инициализированный значением 5. Код: plaintext Не совсем верно. Не буду искать источник (это есть в стандарте и в книгах Мейерса), напишу сразу по сути... При определении объекта в месте объявления насколько мне известно НИКОГДА не вызыватся оператор присваивания или конструктор копирования. e.g. int x = int(5); или int x (5); или int x = 5; АБСОЛЮТНО одно и тоже ( за небольшим исключением в случае наличия explicit конструктора ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 00:21 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34690888&tid=2028454]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 453ms |

| 0 / 0 |
