Форум программистов, компьютерный форум CyberForum.ru

sizeof к объекту или типу? - C++

Восстановить пароль Регистрация
 
h3mbr0
8 / 8 / 0
Регистрация: 12.03.2012
Сообщений: 126
29.09.2012, 17:33     sizeof к объекту или типу? #1
Доброго времени суток! Видел где-то обсуждение, о том к чему надо применять sizeof - к классу или объекту. Мнения были разные, но либо не аргументированные, либо язык их высказываний был для меня непонятен Прошу объяснить мне есть ли разница, и если есть, то в чем она заключается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 17:33     sizeof к объекту или типу?
Посмотрите здесь:

что происходит со старым конструктором когда я создаю новый, пренадлежащий производному типу? (первый конструктор пренадлежит базовому типу) C++
sizeof C++
ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору C++
Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту? C++
sizeof( char * ) & sizeof(char) C++
C++ Как в условии поставить проверку принадлежности к тому или иному типу?
sizeof() C++
C++ Ошибка: не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
C++ Выражение должно относиться к целочисленному типу или типу перечисления без области видимости
Sizeof C++
Выражение должно относиться к целочисленному типу или типу перечисления без области видимости C++
C++ 2IntelliSense: выражение должно относиться к целочисленному типу или типу перечисления без области видимости

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
29.09.2012, 17:55     sizeof к объекту или типу? #2
К типу - объекта может ведь не быть
C++
1
2
3
Type* obj = (Type*) malloc(sizeof(Type));
.......
free(obj );
h3mbr0
8 / 8 / 0
Регистрация: 12.03.2012
Сообщений: 126
29.09.2012, 18:09  [ТС]     sizeof к объекту или типу? #3
А если речь идет о не об инициализации?
Гугл пишет:

Use sizeof(varname) because it will update appropriately if the type of the variable changes. sizeof(type) may make sense in some cases, but should generally be avoided because it can fall out of sync if the variable's type changes.

Struct data;
C++
1
2
3
memset(&data, 0, sizeof(data));
 
memset(&data, 0, sizeof(Struct));
Но я недопонимаю о чем идет речь... а точнее как может "the type of the variable changes"
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
29.09.2012, 18:38     sizeof к объекту или типу? #4
Т.е. имеется в виду по возможности не использовать имя типа
Тип может поменяться. Имеется в виду преобразование типов
C++
1
2
3
4
5
6
7
8
9
10
Class A
..........
Class B
..........
 
A obj1;
B obj2;
 
obj1 = obj2;
obj1 = static_cast<A>(obj2)
;
и т.д
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.09.2012, 19:47     sizeof к объекту или типу? #5
MrCold, Тип не может поменяться, поскольку C++ - статически типизированный язык. Использование переменной вместо типа объясняется тем, что кто-то сначала объявляет переменную типа T, а затем ее тип меняют на U(не преобразовывают, а в буквальном смысле меняют: было написано T var, а стало U var).
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16935 / 5340 / 328
Регистрация: 30.03.2009
Сообщений: 14,354
Записей в блоге: 26
30.09.2012, 12:12     sizeof к объекту или типу? #6
Цитата Сообщение от h3mbr0 Посмотреть сообщение
Прошу объяснить мне есть ли разница, и если есть, то в чем она заключается?
Технически разницы нет. sizeof применяется либо к типу, либо к выражению (а переменная - это частный случай выражения)

Добавлено через 1 минуту
Цитата Сообщение от MrCold Посмотреть сообщение
К типу - объекта может ведь не быть
C++
1
2
3
Type* obj = (Type*) malloc(sizeof(Type));
.......
free(obj );
Можно вполне написать и так:

C++
Type* obj = (Type*) malloc(sizeof(*obj));
Добавлено через 1 минуту

Не по теме:

А по поводу приведения типа после malloc'а - Есть ли в Си аналог std::fill() в C++?

Yandex
Объявления
30.09.2012, 12:12     sizeof к объекту или типу?
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru