powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / type-rich инициализация
25 сообщений из 74, страница 2 из 3
type-rich инициализация
    #39890825
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у обычных кстати нет таких заморочек:
Код: plaintext
1.
2.
3.
4.
    int *a;
    int b = 5;
    a = &b;
    cout << *a << endl;
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892578
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
struct Ball
{
    int size;
    int color;
    string name;

    void set_size(int sz)    {size = sz;}
};



когда я делаю:
Код: plaintext
1.
vector<Ball> {{5,6,"круглый"}, {1,2,"шерстяной"}, {8,2,"tar"}};


у меня ф-я поедет во все объекты и увеличит их ВСЕ или как?
а если её static сделать?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892632
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
у меня ф-я поедет во все объекты и увеличит их ВСЕ или как?
а если её static сделать?

Нет. В объекте не хранятся указатели на его функции.
Это обычные функции с дополнительным аргументом равным указателю на объект. Вызов через `.` - просто синтаксический сахар.

Если есть виртуальные функции, то в объекте еще хранится указатель на таблицу виртуальных функций, но не на сами функции.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892643
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно, спасибо.
В Core Guidelines топят за то, чтобы класс содержал как можно меньше ф-й
что сами ф-и надо выносить наружу, как "helper functions"
авторC.4: Make a function a member only if it needs direct access to the representation of a class
хотя в vector все ф-и внутри класса... Или они уже потом CG сочиняли и вектор не успели ещё переделать, или я чего-то не понял...
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892673
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,

есть книжка: С++17 STL. Стандартная библиотека шаблонов. Автор:Яцек Галовиц

В .pdf доступна, если не найдешь - могу скинуть. Там расписано.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892727
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,
Вектор это контейнер цепочки объектов.
Надо ли объект делать не просто структурой а ещё и умной, с методами, зависит от бизнес логики.
Удобства программиста.
Моделирования.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892893
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух

В Core Guidelines топят за то, чтобы класс содержал как можно меньше ф-й
что сами ф-и надо выносить наружу, как "helper functions"

хотя в vector все ф-и внутри класса... Или они уже потом CG сочиняли и вектор не успели ещё переделать, или я чего-то не понял...


Если функция - часть публичного API класса, то она вполне уместна в самом классе.
А есть это реализаия деталей в private то ее вполне можно вынести из класса и спрятать в .cpp. Но только если это не усложнит программу. Например если в классе много полей, с которыми работает функция, то придется все это передавать в арументах, что затруднит чтение (да и написание) такого кода.

А вообще чем меньше функций в классе тем быстрее компилируется, т.к. меньше зависимостей между модулями. Это скорее всего и была основная причина для появления данного пункта в гиде.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39892907
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
чем меньше функций в классе тем быстрее компилируется,
и тем глупее классы по ООП.
Извечная дилемма.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893041
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Anatoly Moskovsky
чем меньше функций в классе тем быстрее компилируется,
и тем глупее классы по ООП.
Извечная дилемма.

нет там дилеммы, в CG отдельно прописаны инварианты - если они есть, то должны быть внутри класса
А если нет, то вот такие ф-и, которые НЕ проверяют инварианты и НЕ работают с приватами, походу они отлетают наружу в helper functions, которые лежат в том же неймспейсе
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893049
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
полудух,

есть книжка: С++17 STL. Стандартная библиотека шаблонов. Автор:Яцек Галовиц

В .pdf доступна, если не найдешь - могу скинуть. Там расписано.

нашёл английскую 2018 года
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893085
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
нашёл английскую 2018 года

"C++17 STL by Jacek Galowicz" в 2018 не было.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893093
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да она
значит 2е издание
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893110
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
PetroNotC Sharp
пропущено...
и тем глупее классы по ООП.
Извечная дилемма.

нет там дилеммы, в CG отдельно прописаны инварианты - если они есть, то должны быть внутри класса
А если нет, то вот такие ф-и, которые НЕ проверяют инварианты и НЕ работают с приватами, походу они отлетают наружу в helper functions, которые лежат в том же неймспейсе

Если бы не было дилеммы то не было бы топика).
Мне больше нравится вот эта дорожная карта:
Anatoly Moskovsky
Если функция - часть публичного API класса, то она вполне уместна в самом классе.

То есть эти методы известны в классе еще задолго до private..
...
Ну, а если вы передаете их куда то в веб, то передают Data transfer object (DTO) или Value object (VO) уже вообще без функций.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893269
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а посчитать размеры полей в структуре и умножить на кол-во структур в векторе это единственный правильный способ узнать полный размер в памяти?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893315
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
а посчитать размеры полей в структуре и умножить на кол-во структур в векторе это единственный правильный способ узнать полный размер в памяти?

Этот способ - один из неправильных. Примерно как подсчет объема абстрактного хранилища для картошки методом умножения объема одной картошки на ее количество в данный момент. Ты получишь "объем как минимум", всего лишь.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893384
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чтобы узнать как правильно, надо второй раз спрашивать чтоли
или это секрет
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893391
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
а посчитать размеры полей в структуре и умножить на кол-во структур в векторе это единственный правильный способ узнать полный размер в памяти?

A) если простой объект - sizeof
B) если сложный то никак не узнать
С) в отладчике или профайлере в рантайм.
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893422
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
B) если сложный то никак не узнать


ну ок, пусть профайлер...
а MSVS, например, разве не показывает размеры ?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893474
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
а MSVS, например, разве не показывает размеры ?
вверху код. Сколько показал в граммах?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893476
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
Код: plaintext
1.
vector<Ball> {{5,6,"круглый"}, {1,2,"шерстяной"}, {8,2,"tar"}};

если строки по 5000 символов, то сколько размер?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893481
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не моя задача - считать
я для этого компьютер купил
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893489
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но на вскидку можно сказать, что 15024
не понятно, в чём сложность то ему посчитать...
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893500
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
не понятно, в чём сложность то ему посчитать...

Кому "ему"?
Что, менеджер памяти должен вести учет по каждому классу?
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893503
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любой ф-и: sizeof(), или size(), или .size()
непонятно, в чём сложность то пробежаться по вектору и посчитать заполненные поля в структурах...
почему:
PetroNotC Sharp
B) если сложный то никак не узнать
...
Рейтинг: 0 / 0
type-rich инициализация
    #39893521
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух,
Я говорил про указатели в первую очередь.
Как тут считать?
Зависимости.
Вот я одну либо загрузил, а она из за зависимостей 205 либ загрузила.
Второй вопрос, кому это надо?
Проге надо память, она просит у операционки.
А заранее знать занафига?))
...
Рейтинг: 0 / 0
25 сообщений из 74, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / type-rich инициализация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]