Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объявление или определение? 
:(
    Опции темы
FCM
Дата 9.7.2009, 08:19 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: нет
Всего: 9



Задание интерфейса класса (не совмещенное с реализацией его членов) - объявление или определение? Что-то в лит-ре это по разному называют. Что же имеет место быть на самом деле?
PM MAIL   Вверх
zim22
Дата 9.7.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(FCM @  9.7.2009,  08:19 Найти цитируемый пост)
Что же имеет место быть на самом деле?

определение


--------------------
PM MAIL   Вверх
maxim1000
Дата 9.7.2009, 09:06 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 1
Всего: 110



для класса - определение, для его методов - объявление smile


--------------------
qqq
PM WWW   Вверх
GoldFinch
Дата 9.7.2009, 09:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



class A; - объявление
class A {}; - определение
PM MAIL ICQ   Вверх
FCM
Дата 9.7.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: нет
Всего: 9



Под определение класса (без определений методов) выделяются ресурсы?
PM MAIL   Вверх
GoldFinch
Дата 9.7.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



FCM, какие ресурсы?
PM MAIL ICQ   Вверх
zim22
Дата 9.7.2009, 15:27 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(FCM @  9.7.2009,  15:07 Найти цитируемый пост)
Под определение класса (без определений методов) выделяются ресурсы?

конечно да.
***
под ресурсами я подразумевал размер файла. и я уже не так уверен... smile
сравнил две версии бинарника: один с классом, другой - без.
Код

int main() {
}

Код

class MyClass { };
int main() {
}

размер идентичный, раличны лишь 5 байтов.


Это сообщение отредактировал(а) zim22 - 9.7.2009, 15:46


--------------------
PM MAIL   Вверх
FCM
Дата 9.7.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: нет
Всего: 9



Цитата(GoldFinch @  9.7.2009,  15:25 Найти цитируемый пост)
FCM, какие ресурсы? 

ПРи определении переменных под них выделяется память.
При определении класса (именно класса, а не его объектов), выделяется память?
PM MAIL   Вверх
GoldFinch
Дата 9.7.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



FCM, если у класса есть статические члены, или если включен RTTI (runtime информация о типах)
PM MAIL ICQ   Вверх
FCM
Дата 9.7.2009, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: нет
Всего: 9



Т.е. получается, что про "описание" С-структуры, говорят как об объявлении, потому что для нее нет ситуаций, когда выделение памяти необходимо, в отличие от классов ( ну и C++ структур), где в некоторых случаях (приведенных выше) выделение памяти происходит?
PM MAIL   Вверх
mes
Дата 9.7.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GoldFinch @  9.7.2009,  08:49 Найти цитируемый пост)
class A; - объявление
class A {}; - определение 

 

class A;               // пред`объявление класса
class A{...};          // объявление класса
class A{...} a;        // объявление класса и определение переменной
class A{...} extern a; // объявление класса и объявление переменной
А а;                   // определение переменной


был неправ, залез в стандарт :
Цитата

2 A  class-name is inserted into the scope in which it is declared imme-
  diately after the class-name is seen.  The class-name is also inserted
  into  the scope of the class itself.  For purposes of access checking,
  the inserted class name is treated as if it were a public member name.
  A  class-specifier  is  commonly referred to as a class definition.  A
  class is considered defined
 after the closing brace of its class-spec-
  ifier  has  been  seen even though its member functions are in general
  not yet defined.



Это сообщение отредактировал(а) mes - 9.7.2009, 19:57


--------------------
PM MAIL WWW   Вверх
zim22
Дата 9.7.2009, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(mes @  9.7.2009,  19:23 Найти цитируемый пост)
class A{...} extern a; // объявление класса и объявление переменной

может определение класса?


--------------------
PM MAIL   Вверх
mes
Дата 9.7.2009, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GoldFinch @  9.7.2009,  14:41 Найти цитируемый пост)
FCM, если у класса есть статические члены,

нет, память под статическую переемменую в описании класса не отводится,
Код

class A { static int a; } // тут под нее не выделено ни байта

int А::a; // а вот тут определяем эту переменную и значит выделяется под нее память



Это сообщение отредактировал(а) mes - 9.7.2009, 19:59


--------------------
PM MAIL WWW   Вверх
zim22
Дата 9.7.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(mes @  9.7.2009,  19:29 Найти цитируемый пост)
declaration

что-то я недопонимаю. если это declaration, тогда почему я не могу две переменных объявить?
Цитата

 error C2011: 'C' : 'class' type redefinition

Код

class C {} extern a;
class C {} extern b;



--------------------
PM MAIL   Вверх
mes
Дата 9.7.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(zim22 @  9.7.2009,  18:42 Найти цитируемый пост)
что-то я недопонимаю. если это declaration, тогда почему я не могу две переменных объявить?

это я чего то напутал, сорри .. исправился в верхнем посту.



--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.