Информация об изменениях

Сообщение Re[5]: Приведение базового класса в конструкторе потомка от 03.09.2019 11:50

Изменено 03.09.2019 12:07 rg45

Re[5]: Приведение базового класса в конструкторе потомка
Здравствуйте, Евгений Музыченко, Вы писали:

R>>Я думаю, тебе полезно будет освежить в памяти рекомендации из этой чудесной книженции:


ЕМ>Я ее как раз недавно перечитывал. Охотно последую этим советам, если кто-нибудь сумеет внятно объяснить, почему 32-разрядный int "безусловно следует" передавать по значению, а 32-разрядную структуру — столь же "безусловно", но по ссылке.


Ну насчет "безусловно" это ты загнул, конечно. Ну ОК, объекты небольших структур с недорогим копированием, типа твоего Base, вполне допустимо передавать по значению. Об этом говорится в рекомендации №25. Однако способом передачи по умолчанию все же является передача по константной ссылке. Генеруемые компилятором конструкторы копирования и копирующие операторы присванивания имеют именно такой вид. Однако ты почему-то не стал заморачиваться определением конструктора копирования для класса Base, а оставил сгенерированный компилятором, принимающий параметр по константной ссылке. Почему? Через регистры же оптимальнее?

Ну а что насчет других рекомендаций — касающихся неявных преобразованиях и модификаторов const при параметрах? Тоже не согласен с чем-то?
Re[5]: Приведение базового класса в конструкторе потомка
Здравствуйте, Евгений Музыченко, Вы писали:

R>>Я думаю, тебе полезно будет освежить в памяти рекомендации из этой чудесной книженции:


ЕМ>Я ее как раз недавно перечитывал. Охотно последую этим советам, если кто-нибудь сумеет внятно объяснить, почему 32-разрядный int "безусловно следует" передавать по значению, а 32-разрядную структуру — столь же "безусловно", но по ссылке.


Ну насчет "безусловно" это ты загнул, конечно. Ну ОК, объекты небольших структур с недорогим копированием, типа твоего Base, вполне допустимо передавать по значению. Об этом говорится в рекомендации №25. Однако способом передачи по умолчанию все же является передача по константной ссылке. Генеруемые компилятором конструкторы копирования и копирующие операторы присванивания имеют именно такой вид. Все стандартные шаблонные функции, наподобие push_back, например, принимают параметры по константной ссылке и никого не парит возможная потеря производительности при работе с целыми числами. Почему так? И ты почему-то не стал заморачиваться определением конструктора копирования для класса Base, а оставил сгенерированный компилятором, принимающий параметр по константной ссылке. Почему? Через регистры же оптимальнее?

Ну а что насчет других рекомендаций — касающихся неявных преобразованиях и модификаторов const при параметрах? Тоже не согласен с чем-то?