Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 22:53   #11
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

А вот сдесь я прав?
Код:
struct SomeStructure;// Описание
struct SomeStructure{char cPar, int iPar};// Описание
SomeStructure MyStruct;// Определение
Ещё одна строчка вызывает вопрос:
Код:
template<class T> abs(T a) { return a<0 ? -a : a; }
Как написать "чистое" описание и определение?
KemanSR вне форума Ответить с цитированием
Старый 30.11.2010, 09:28   #12
c++ learner
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 38
По умолчанию

Цитата:
А вот сдесь я прав?
Безусловно, друг мой вы всегда правы даже если не…))
Со структурами, наверное все так и есть как вы написали.

А шаблонная ф-я модуля она сама по себе разве не описание?
где вы там "грязное" увидели что бы чистое выделять?
"...в самом начале было слово.." т.е. 16-битное битовое поле.
c++ learner вне форума Ответить с цитированием
Старый 30.11.2010, 10:30   #13
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
А вот сдесь я прав?
Нет, не правы. Различайте объявление/определение структуры/класса и экземпляра этой структуры/класса.
Вообще, что есть объявление? Это указание того, что в данной области видимости имеется некая сущность (объект, класс, функция и т.д.) под таким-то именем, которую остальные находящиеся в этой области видимости могут использовать - модифицировать эту переменную, вызывать эту функцию, объявлять функцию или класс в качестве своих друзей и т.п., но при этом вовсе необязательно знать их размер.
Вот так будет правильно:
Код:
struct SomeStructure;//Объявление
struct SomeStructure{char cPar, int iPar};//Определение
extern SomeStructure MyStruct;//Объявление
SomeStructure MyStruct;//Определение
Для объектов объявление без определения - это их тип и имя со словом extern, для структур/классов - имя, для функций - сигнатура. Определение же - это соответственно тип и имя без extern, имя и объявление всех членов, сигнатура и тело функции.
С шаблонной функцией, полагаю, та же ерунда - если убрать тело функции, то это и будет только объявление без определения.

Цитата:
А шаблонная ф-я модуля она сама по себе разве не описание?
где вы там "грязное" увидели что бы чистое выделять?
Насколько я понимаю, инстанцирование на объявление/определение никак не влияет. А вообще, у Страуструпа оно отмечено как "грязное".
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 30.11.2010 в 10:33.
Гром вне форума Ответить с цитированием
Старый 30.11.2010, 12:05   #14
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Благодарю Вас, особенно Гром'а. Разьедает лишь одна читата из Страуструпа: "Большинство указанных описаний одновременно являются определениями, т.е. они создают объект, на который ссылается имя." Получается если создаётся объект, то это определение, а если объект не создаётся это описание. Рассмотрим следующий код:
Код:
struct SomeStruct; // объект не создаётся, описание
struct SomeStruct{int iItem; float fltItem;};// Создаётся ли объект? Получается что создаётся.
А так, теперь я "железно" понимаю что такое описание, а что такое определение.(Маяковский). Ещё раз всем спасибо!

Последний раз редактировалось KemanSR; 30.11.2010 в 12:12.
KemanSR вне форума Ответить с цитированием
Старый 30.11.2010, 13:31   #15
c++ learner
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 38
По умолчанию

Гром
Цитата:
но при этом вовсе необязательно знать их размер.
А я думал, что для объявления это обязательно + возможность производить манипуляции с выделенной для них памятью … все же остальное, не имеющее реального «весу» и «места» считал за – сумулякра т.е. описание чего-то еще не существующего.
Понятно, что общей гребенкой тут все типы и понятия языка не причешешь. Возможно, вы правы)
"...в самом начале было слово.." т.е. 16-битное битовое поле.
c++ learner вне форума Ответить с цитированием
Старый 09.01.2011, 23:01   #16
KemanSR
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 129
По умолчанию

Решая задания из "Специздания" Страуструпа наступил на старые "грабли":
Страуструп утверждает что:
Код:
typedef complex<short> Point;
namespace NS{int a;}
- это определения. Как -же написать объявления? Заранее благодарен.
KemanSR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описание задачи Dolgan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 26.11.2010 15:22
описание класса SvetaLee Помощь студентам 1 30.10.2010 23:27
Описание функции A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 14.06.2010 14:48
Описание к программе May7768 Помощь студентам 0 12.05.2010 17:52
Описание процедуры phantom4eg Помощь студентам 6 17.03.2009 18:55