копировать конструктор, передавать по значению и возвращать по значению, операцию цепочки, компилятор

Учитывая, что все кадры данных имеют одинаковые столбцы, вы можете просто concat их:

import pandas as pd
df = pd.concat(list_of_dataframes)
0
задан Lakshay Garg 13 July 2018 в 23:58
поделиться

1 ответ

Ваш оператор присваивания должен возвращать Point & не Point, и он должен также принимать параметр в качестве справки:

Point &operator = (const Point &p) { return *this; }

В противном случае может возникнуть ненужное копирование. Скорее всего, создается одна копия, поступающая в оператор присваивания, тогда возвращаемое значение копируется как на p2, так и на p1.

1
ответ дан Sid S 17 August 2018 в 12:05
поделиться
  • 1
    Спасибо за ваш ответ @Sid. Я знаю правильный способ записи функции (перейдите по ссылке и верните ссылку, чтобы избежать ненужного копирования и цепочки). Однако я просто озадачен, почему конструктор копирования дважды вызывается для p2 = p3 и один для p1 = копия возвращенного объекта? – user3112666 13 July 2018 в 23:43
  • 2
    @user Поскольку Point operator= (Point p) { return *this; } делает копию своего параметра и снова возвращает его возвращаемое значение. – Neil Butterworth 13 July 2018 в 23:45
  • 3
    Скорее всего, создается одна копия, поступающая в оператор присваивания, тогда возвращаемое значение копируется как для p2, так и p1. – Sid S 13 July 2018 в 23:45
Другие вопросы по тегам:

Похожие вопросы: