Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
20 / 20 / 8
Регистрация: 06.11.2013
Сообщений: 65
Записей в блоге: 1
1

Почему размеры классов не равны нулю?

06.10.2017, 04:56. Показов 584. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <conio.h>
#include <iostream>
 
//#pragma pack(1)
 
class A {};
 
class B { virtual ~B() {}; };
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::cout << sizeof(A) << std::endl;
    std::cout << sizeof(B) << std::endl;
 
        getch();
    return 0;
}
Почему размер класса В выдается как 4? (Я думаю за счет того, что за счет сохранения в таблице адреса виртуального деструктора.)
Почему размер класса А не равен нулю? В нем ведь нет никаких данных и зависит от аргумента директивы выравнивания препроцессора #pragma pack()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2017, 04:56
Ответы с готовыми решениями:

Почему значения полей равны нулю?
Ребят помогите, запара с консруктором, не могу понять в чем проблема... Почему значения...

Чётные элементы равны нулю
Задана исходная матрица.Размерность матрицы определяется пользователем при выполнении...

Sin(pi) и cos(pi/2) не равны нулю
Почему при вводе sin(pi)=1.22460635382238*10-16 cos(pi/2)=6.12303176911189*10-17 Значения...

Все ID равны нулю в PHPMyAdmin!
Здравствуйте! Я создаю интернет-магазин для обучения. В PHPMYADMIN я создал таблицу &quot;category&quot;. С...

1
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
06.10.2017, 08:37 2
Цитата Сообщение от k399et Посмотреть сообщение
Почему размер класса В выдается как 4?
4 - это размер указателя на виртуальную таблицу (в режиме x64 будет 8 байт).
Добавляешь virtual - получаешь такой указатель в каждом экземпляре класса.
Это плата за полиморфизм.

Цитата Сообщение от k399et Посмотреть сообщение
Почему размер класса А не равен нулю?
Потому что это поставило бы компилятор в тупик в некоторых случаях.
Например:
C++
1
2
3
4
5
A array[5]; // Какой будет размер массива, если sizeof (A) == 0?
 
A * p1 = &array[2];
A * p2 = &array[3];
// p1 и p2 должны указывать на один и тот же адрес или нет?
1
06.10.2017, 08:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2017, 08:37
Помогаю со студенческими работами здесь

Умножить числа, которые не равны нулю
Даны целые числа a, b, c, d. Найти произведение чисел, которые не равны нулю.

Определить равны ли нулю все введённые числа
Что-то никак не могу врубиться в условие этой задачи.......... Даже идей нет, как без условия в...

Найти индексы элементов, которые равны нулю
Здравствуйте, многоуважаемые посетители нашего форума. Помогите пожалуйста с решением задания,...

Нахождение произведения элементов матрицы, которые не равны нулю
Задано двумерный числовой массив. Постройте алгоритм и составьте программу нахождения произведения...

Напечатать номера элементов массива, не равны нулю и меньше b
Составить программу для обработки массива из 15 чисел...

Вычислить произведение элементов массива, которые не равны нулю
Написать программу с помощью которой можно вычислить произведение элементов массива, которые не...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru