Вопросы по теме 'object-slicing'

Предотвращение нарезки в конструкторе копирования
Я хочу скопировать вектор объектов типа Foo, но объекты могут быть несколькими различными производными типами Foo. Я не могу понять, как копировать без нарезки. Вот код моей игрушки #include "stdafx.h" #include <memory> #include...
1859 просмотров
schedule 20.06.2023

Является ли `auto x = f()` лучше, чем `T x = f()`?
В другой теме кто-то предложил использовать auto x = f(); вместо T x = f(); (если подпись f T f() ). Они указали, что это предотвращает нарезку скрытых объектов, если кто-то меняет f на U f() , где U происходит от T ....
263 просмотров
schedule 09.03.2022

Может ли быть хорошей идеей помещать виртуальные методы в копируемый тип?
Видели несколько связанных вопросов, но не этот ... Я рассматривал классы как относящиеся к нескольким основным категориям, скажем, для простоты, этим четырем: Классы значений , которые содержат некоторые данные и набор операций. Их можно...
651 просмотров

Способ преодоления нарезки объектов
Есть ли способ отойти, преодолеть нарезку объектов без использования нового ключевого слова в качестве параметра для работы? У меня есть базовый объект class Person{ public: Person(string name , int age ){ this -> name...
1460 просмотров

Нарезка при вставке указателя производного класса в вектор базового класса
Мой базовый класс называется Account , а производный класс Businessaccount имеет дополнительную переменную int с именем x , а также метод получения ( int getx() ) для нее. Предполагается ли нарезка в следующей ситуации? Это, очевидно,...
59 просмотров
schedule 30.10.2022

Четко ли определено разделение объектов путем назначения через базовую ссылку?
Является ли нарезка объекта, которая происходит при назначении производного объекта через ссылку на базовый класс (без виртуального operator= ), четко определенной операцией? То есть гарантирует ли стандарт, что производные части объекта останутся...
61 просмотров

Почему возврат виртуального класса * по значению * в C ++ изменяет v-таблицу?
В следующем коде я возвращаю производный класс CDerived по значению из функции, возвращающей его базовый класс CBase . Например, CDerived содержит поле _number , и я понимаю, что оно отсекается во время преобразования в тип возвращаемого...
73 просмотров
schedule 18.08.2022