
Max
24.10.2016
15:05:17
даешь god-классы!1

Dumitru
24.10.2016
15:05:19

Andrey
24.10.2016
15:05:26

Dumitru
24.10.2016
15:06:08

Google

Kirill
24.10.2016
15:06:54
Общее правило: если функция, работающая с классом, не требует доступа к его внутренним полям, или этот доступ эффективно осуществим через геттеры/сеттеры, то функцию лучше объявить следом за классом в том же файле в том же простанстве имен. Исключение: шаблонные классы.

Andrey
24.10.2016
15:07:45

Kirill
24.10.2016
15:07:48
Класс std::string пример неудачного проектирования. :)
В нем больше сотни функций-членов.

Andrey
24.10.2016
15:08:14
stl в первоначальном виде, это отдельная песня

Kirill
24.10.2016
15:08:18
Из которых 2/3 можно сделать внешними.

Andrey
24.10.2016
15:08:33
Степанов в принципе не любит ООП )

Kirill
24.10.2016
15:08:51
Какой Степанов?

Dumitru
24.10.2016
15:08:51
А на сколько хорошая практика реализовывать функции в хэдере ?

Max
24.10.2016
15:08:59

Andrey
24.10.2016
15:08:59
отравившись рыбой :D

Kirill
24.10.2016
15:09:16

Google

Kirill
24.10.2016
15:09:19
а чем стринг плох?

Max
24.10.2016
15:09:22

Dumitru
24.10.2016
15:09:34

Aldar
24.10.2016
15:09:46
есть еще такая штука - anonymous namespace
тарить в ней реализацию всяких хелперов

Kirill
24.10.2016
15:10:18

Kirill
24.10.2016
15:10:19

Max
24.10.2016
15:10:35
да, точно

Kirill
24.10.2016
15:10:41

Andrey
24.10.2016
15:10:54
для инлайнов есть
inline

Kirill
24.10.2016
15:11:27

Kirill
24.10.2016
15:11:29
для инлайнов есть
inline
но если нет lto и оно в другой единце трансляции, то пофиг на инлайн, из одного бьекта в другой ничего не перескочит

Andrey
24.10.2016
15:12:08

Kirill
24.10.2016
15:12:31

Kirill
24.10.2016
15:12:34

Andrey
24.10.2016
15:12:54

Kirill
24.10.2016
15:14:11
В среднестатистическом коде после оптимизации функции, объявленные как встроенные, не будут встроены, а многие из не объявленных встроятся. :)

Kirill
24.10.2016
15:15:02
я по специфике работы пишу на O3 и смотрю асм листинги
вот там такой пипец, когда все параметры шаблонно передаются компилятору на откуп дается сквозная оптимизация))

Kirill
24.10.2016
15:15:32
Сочувствую.

Google

Kirill
24.10.2016
15:16:23
Что бы там Линус не говорил про i386, его ассемблер это жесть.

Kirill
24.10.2016
15:16:34
у меня арм ассемблер
thumb thumb2

Kirill
24.10.2016
15:17:20
А, ну про ARM не знаю. Я видел ассемблер Analog Devices SHARC. Это просто песня.
256 регистров и инструкции вида r14 = r5 + r10;
Если пишешь маленькую плохонькую программку, то даже не придется в память обращаться.

Kirill
24.10.2016
15:20:57
там 13 общего назначения.
метр флеша, 128 кб оперативки.
в большинстве случаев такой дикий угар с передачей 99% параметров в виде шаблонных параметров и вычисление из них в compile time нужных тебе вещей является излишеством
но живем один раз, и почему бы собственно нет :)

Kirill
24.10.2016
15:22:06

Kirill
24.10.2016
15:22:24
задачи не столь сложны чтобы прям охреневать)

Alex Фэils?︙
24.10.2016
15:30:55

Vladislav
24.10.2016
16:37:17

Ned Ogl
24.10.2016
16:47:44

Kirill
24.10.2016
16:50:53
Потому что функции-члены нужны для работы с членами класса. Незачем пихать в класс то, что может быть столь же эффективно реализовано вне класса.

Ned Ogl
24.10.2016
16:51:32
Слышал, операторы хорошо бы наружу, но не впираю, нахера
Вот реально, ведь все равно объявлять френдами в классе
Какая разница как потом его описать

Kirill
24.10.2016
16:56:15
Начнем с того, что не любой оператор можно определить внутри класса.

Ned Ogl
24.10.2016
16:56:30
Например?...
Наоброт, снаружи, вроде б

Google

Ned Ogl
24.10.2016
16:57:03
И что ты понимаешь под "объявить внутри/снаружи"

Kirill
24.10.2016
16:57:10
Например, любимый многими оператор потокового вывода <<

Alex Фэils?︙
24.10.2016
16:57:46
А киньте книжку банды четырех по паттернам проектирования

Ned Ogl
24.10.2016
16:58:03
Она ж сверху где-то всегда
Была...

Alex Фэils?︙
24.10.2016
16:58:57
Нащел
Тут есть

Kirill
24.10.2016
16:59:01
Потому что операторы, определенные как члены, подразумевают левый операнд типа класса.

Alex Фэils?︙
24.10.2016
16:59:35
#book #design #patterns

Admin
ERROR: S client not available

Ned Ogl
24.10.2016
16:59:43
Но зачем тогда бинарные принято выносить наружу? И как объявить снаружи оператор, если все равно надо friend?

Kirill
24.10.2016
17:00:49
А если нужен оператор вида T1 op T2, где T2 - твой класс, то его можно определить только как внешнюю функцию.

Ned Ogl
24.10.2016
17:01:09
Блин, непонятно... Разве тот же << не надо внутри класса сделать френдом?
Я чот позабыл эту лекцию

Kirill
24.10.2016
17:02:21

Ned Ogl
24.10.2016
17:02:42
Заебёшься же геттеры звать, это же call, это же долго...

Kirill
24.10.2016
17:03:30
Либо делаешь оператор другом, либо добавляешь функцию член toString, которую вызываешь в теле оператора.

Google

Kirill
24.10.2016
17:03:59

@CriOnsKry
24.10.2016
17:04:30

Kirill
24.10.2016
17:04:59

@CriOnsKry
24.10.2016
17:05:19
Про бота? ?
Нет, на должность тех.инженера или тех.директора

Ned Ogl
24.10.2016
17:05:25

@CriOnsKry
24.10.2016
17:05:29
Новая, сегодня-вчера

Ned Ogl
24.10.2016
17:05:45
Угорал долго)

Kirill
24.10.2016
17:06:14

@CriOnsKry
24.10.2016
17:06:41

Kirill
24.10.2016
17:07:46

Ned Ogl
24.10.2016
17:08:02
А что ты читал, что так знаешь?
Или чистая практика?

Kirill
24.10.2016
17:08:38
Саттер, Мейерс

Ned Ogl
24.10.2016
17:08:58
Ты офигенно объясняешь, тебе бы лекции читать)
И лаконично, и понятно)

Kirill
24.10.2016
17:09:38
Если бы за это еще платили... ?

Ned Ogl
24.10.2016
17:09:48
Плотят же, не поверишь)
Школоло, студенты
Репетитором, а там развивать тему
Я так с матикой провернул