Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
h3mbr0
294 / 104 / 30
Регистрация: 12.03.2012
Сообщений: 419
#1

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

29.09.2012, 17:33. Просмотров 600. Ответов 5
Метки нет (Все метки)

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

Sizeof(.) или constexpr size_t tmp = sizeof(.)
sizeof(...) или constexpr size_t tmp = sizeof(...) Как лучше с точки зрения...

Выражение должно относиться к целочисленному типу или типу перечисления без области видимости
Добрый день,столкнулся с проблемой "Выражение должно относиться к...

Выражение должно относиться к целочисленному типу или типу перечислений без области видимости
#include "stdafx.h" #include <iostream> using namespace std; class lVector...

Выражение должно относиться к целочисленному типу или типу перечисления без области видимости
#include <iostream> #include <cmath> using namespace std; int main() {...

2IntelliSense: выражение должно относиться к целочисленному типу или типу перечисления без области видимости
"Выражение должно относиться к целочисленному типу или типу перечисления без...

5
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
29.09.2012, 17:55 #2
К типу - объекта может ведь не быть
C++
1
2
3
Type* obj = (Type*) malloc(sizeof(Type));
.......
free(obj );
1
h3mbr0
294 / 104 / 30
Регистрация: 12.03.2012
Сообщений: 419
29.09.2012, 18:09  [ТС] #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"
0
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
29.09.2012, 18:38 #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)
;
и т.д
1
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.09.2012, 19:47 #5
MrCold, Тип не может поменяться, поскольку C++ - статически типизированный язык. Использование переменной вместо типа объясняется тем, что кто-то сначала объявляет переменную типа T, а затем ее тип меняют на U(не преобразовывают, а в буквальном смысле меняют: было написано T var, а стало U var).
2
Evg
Эксперт CАвтор FAQ
19281 / 7137 / 529
Регистрация: 30.03.2009
Сообщений: 19,983
Записей в блоге: 30
30.09.2012, 12:12 #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++?

2
30.09.2012, 12:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2012, 12:12

Fwrite (buffer , sizeof(char), sizeof(buffer), pFile)
как записать часть массива чаров? допустим у нас arr; мне надо записать с...

что происходит со старым конструктором когда я создаю новый, пренадлежащий производному типу? (первый конструктор пренадлежит базовому типу)
1) что происходит со старым конструктором когда я создаю новый, пренадлежащий...

Как в условии поставить проверку принадлежности к тому или иному типу?
Как в условии поставить проверку принадлежности к тому или иному типу? ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru