![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Gunslinger |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
С наступившим!
![]()
Теперь понял, спасибо.
Я говорил про это же: ci из функции f изменить нельзя. Получается так: 1. У встроенных типов конструкторов нет. Поэтому 2. если написать int g;, то создастся переменная с мусором в качестве значения. Это объявление 3. int m=2; - объявление и инициализация. Инициализация -- когда в переменную пишем только когда она только что объявлена (как в примере) или не важно, можно где-то после объявления? Т.е. инициализацией называют самое первое присваивание (неважно, когда его делаем), которое затирает мусор? 4. Объявление -- присвоение переменной нового значения, т.е. затирание не мусора, а значения, ранее записанного программистом? 5. Оффтоп: конструктор копирования нужен, чтобы можно было передавать пользовательский объект в функцию (по значению, конечно)? Это сообщение отредактировал(а) Gunslinger - 1.1.2010, 16:48 |
||||||
|
|||||||
mes |
|
||||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
да нельзя.. но почему ci дает разный результат на каждой итерации цикла ? нету
не поэтому это определение определение и инициалиыация
не обьявления, а создания
это не присваивание.. 1. возьмите инициализацию ссылки - в контексте присваивания это рассматривать нельзя.. 2. она не должна затирать мусор .. она должна привадитэ обьект в начальное состояние..
нет нет нет нет
нет .. и забудьте об этих конструкторах пока не поймете что такое обьявление, определение, инициалиция и присваивание. не копайте вглубь пока не разобрались с основами.. |
||||||||||
|
|||||||||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Не обратил внимание на второй параметр.. Упустил такой вариант, изменить можно. Хотя таких психов надо поискать. Зависит от реализации компилятора? Всегда думал, что подобный текст - объявление. Что же такое объявление?
"Затирать мусор" имел ввиду присвоение к нужному значению. Вроде тоже самое. Концептуальный процесс: выделение памяти для объекта; присвоение объекту первоначального значения (либо нужного, либо "технического" -- 0); изменение значения объекта (в процессе работы). Так вот на такой схеме: что есть что? |
|||
|
||||
zim22 |
|
||||||||||||||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
объявлять переменные можно сколько угодно раз. определены же они должны быть только один раз. тоже самое касается и функций. объявление - это указание компилятору, что переменная определена где-то в другом месте. если на этапе линковки это "другое место" обнаружено не будет - будет ошибка линковки. вот объявление:
а вот определение:
*** не поленюсь из книги привести цитату, уж больно хорошо объясняется. isbn 5-8459-1121-4 (рус) isbn 0-201-72148-1(англ)
Это сообщение отредактировал(а) zim22 - 2.1.2010, 18:52 |
||||||||||||||||
|
|||||||||||||||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Фигово по переводной литературе обучаться... Даже и не думал, что объявление -- это extern. Что за книга? Значит, 1. объявление -- extern: память не выделяется. extern используется только для объявления встроенных типов и самостоятельных функций? Для классов есть include. 2. Определение -- обычное создание переменной, вроде int d: память выделяется, в ней лежит мусор 3. Инициализация -- первоначальное присвоение значения. Далее по программе -- уже не инициализация, а присвоение. Так? |
|||
|
||||
zim22 |
|
||||||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
нет 1. есть объявления переменных, функций, предварительные объявления классов. объявления переменных - это extern
объявление функций - это просто строка с прототипом функции (без её тела)
предв.объявление класса (forward declaration) - это ключевое слово class за которым следует имя класса, заканчивающееся ;
не обязательно мусор. для пользовательских типов данных будут вызваны конструкторы. встроенные типы данных, определённые в глобальной области видимости, будут инициализированы значением по умолчанию для их типа (нулём или пустой строкой). также любое определение является и объявлением. *** объявление - declaration определение - definition Это сообщение отредактировал(а) zim22 - 3.1.2010, 13:22 |
||||||||
|
|||||||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Вспомнил, читал. Смысл тотже самый, что и extern. Весь нюанс между объявлением и определением в том, что под объявленный объект память не выделяется и присвоение такому объекту значения будет ошибкой? |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
не стоит задавать вопросы, ответы на которые ты можешь получить сам. просто откомпиль и глянь что будет. |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
присвоение тут второстепенно.. если объект только объявлен, но не определен, значит его не существует. а ньанс в том, что
и почитайте наконец то (внимательно и с разбором) хоть какую нибудь книжку по C++.. а то толчем воду в ступе... Это сообщение отредактировал(а) mes - 3.1.2010, 17:56 |
||||
|
|||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |