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

Размер объекта - C++

Восстановить пароль Регистрация
 
Mr_vanDort
 Аватар для Mr_vanDort
1 / 1 / 0
Регистрация: 14.11.2012
Сообщений: 10
30.12.2012, 18:38     Размер объекта #1
Только что прочитал такую статью - http://devdoc.web-ide.ru/index.php/c...rtual_base.htm
И там написано "Создание объекта – это просто выделение блока памяти для данных этого класса и все! Соответственно, размер объекта полностью зависит только от количества и размера переменных, но не от методов."

И я ,может конечно не правильно подумал - и решил что такой класс должен весит 0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A
{
      public:
      A()
      {
                cout<<"Creat A\n";
                }
       ~A()
      {
          cout<<"Destroy A\n";
          }
      void print(){cout<<"Print A\n";}
 
          };
но ведь такого не может быть
A ob;
sizeof(ob) = 1. это как -то связано с указателем this?

а когда сделал функцию print() - virtual - то sizeof(ob) = 4
а это как-то связано с вшиваемым в конструктор указателем vpointer ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2012, 18:38     Размер объекта
Посмотрите здесь:

Как узнать размер объекта класса? C++
Размер объекта в байтах C++
Как правильно вызывать функцию объекта из другой функции того же объекта? C++
C++ Требуется ли при удалении объекта посредством delete указывать тип объекта?
При возврате объекта из функции пишет, что для объекта не определен констуктор копирования C++
Ввести размер массива с клавиатуры и передать этот размер в конструктор C++
Размер объекта? C++
C++ Размер объекта со всеми вложениями

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
30.12.2012, 18:58     Размер объекта #2
Цитата Сообщение от Mr_vanDort Посмотреть сообщение
но ведь такого не может быть
Чего действительно не может быть, так это чтобы два разных объекта располагались по одному и тому же адресу, поэтому даже абсолютно пустой объект должен занимать хоть какое-то место. А то хорош был бы массивчик таких объектов... Это если он самостоятельный, конечно, а не член или предок другого класса/структуры.
Цитата Сообщение от Mr_vanDort Посмотреть сообщение
а это как-то связано с вшиваемым в конструктор указателем vpointer?
Непосредственно. С появлением виртуальной функции в составе объекта появился этот указатель, размером как раз в те самые 4 байта.
Yandex
Объявления
30.12.2012, 18:58     Размер объекта
Ответ Создать тему
Опции темы

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