Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: рекурсивный поиск файлов  (Прочитано 38958 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #30 : 13-04-2017 22:28 » 

Потому, что в него можно передать как const, так и не const источник. Есть аргумент будет не const, то и передать можно будет только не const. В плюсах const — часть типа. Т.е. const T и T — разные типы. А по правилам приведения типов T можно привести к const T, но не наоборот.

И не придумывай новые термины. Попробуй, к примеру, почитать самоучитель.
« Последнее редактирование: 13-04-2017 22:30 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #31 : 14-04-2017 10:13 » 

Aether, я не знаю такое - "динамический класс"
И не придумывай новые термины. Попробуй, к примеру, почитать самоучитель.
"new - оператор языка С++, обеспечивающий выделение динамической памяти в куче" Стало быть:
Код: (C++)
MyClass* first = new MyClass();
это будет размещением класса в динамической памяти.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #32 : 14-04-2017 15:07 » 

Aether, класс не бывает динамическим, это создаётся экземпляр класса
Записан

Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #33 : 15-04-2017 11:23 » 

Aether, класс не бывает динамическим, это создаётся экземпляр класса
Как правильно обозвать разницу:
Код: (C++)
MyClass first();
от
Код: (C++)
MyClass* first = new MyClass();
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 15-04-2017 11:56 » new

Aether,
1 - создание локальной переменной на стеке
2 - создание переменной в куче и получение указателя

"переменная" и "экземпляр класса" - это, считай, одно и то же

а класс - это как бы чертёж в исходниках, по которому переменная создаётся
Записан

Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 15-04-2017 13:25 » 

То есть, из-за того, что класс может быть и динамическим придумано такое упрощение?
То есть из-за того, что класс может быть размещён, как в стеке, так и в куче, придумано такое обобщение - ссылка? И единообразный синтаксис доступа к членам через "."?
А так, на деле, я понял, что в функцию будет передан тот же указатель.

Кстати, а почему в "С" появилось разделение на "." и "->"?

Нет, правда интересно знать, как устроено изнутри, и главное - почему.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #36 : 15-04-2017 17:12 » 

Aether, "." - оператор доступа к члену класса

Код:
myclass c;
c.member=1;

в случае указателя для доступа к члену класса требуется произвести разыменование

Код:
myclass* c=new myclass;
(*c).member=1;

или так
Код:
c->member=1;

Aether, тебе выше правильно же советуют прочитать основы - там всё систематизировано будет рассказано. Посмотри, скажем, тут
https://club.shelek.ru/viewfiles.php?id=16
Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #37 : 15-04-2017 17:22 » 

Кстати, а почему в "С" появилось разделение на "." и "->"?

Это "синтаксический сахар". Если b - поле структуры a, а p - указатель на a, то a.b, (*p).b и p->b - один и тот же объект, т.е. поле b структуры, на которую указывает p.

Создатели C любили краткие формы записи (2 литеры вместо 4), и к тому же уберегли новичков от дурной ошибки: если "забыть" скобки в выражении (*p).b, получим совершенно другую конструкцию *p.b (или *(p.b)), т.е. объект, на который указывает указатель p.b. Дело в том, что операция выбора поля структуры "." имеет более высокий приоритет, чем операция разыменования "*", поэтому при выборе поля структуры через указатель скобки необходимы.

Нет, правда интересно знать, как устроено изнутри, и главное - почему.

Читайте правильные книги. Несколько таких есть в моих обзорах, например, Expert C Programming: Deep C Secrets и Tutorial on Pointers and Arrays in C. Почитайте также блог Дэна Сакса. На несколько интересных статей я уже написал обзоры (1, 2, 3, 4), но их там гораздо больше. Человеку, который много лет состоял в комитете по стандартизации C и C++, определенно есть что рассказать по теме.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines