2015-12-07 2 views
0

Итак, у меня есть PFArrayD.cpp, все реализованы и работают нормально, мне просто сложно понять, как работает на нем конструктор копий. Это код для конструктора копирования.PFArrayD.cpp реализация Copy Constructor

PFArrayD::PFArrayD(const PFArrayD& pfaObject) : capacity(pfaObject.getCapacity()), //SOLUTION 
used(pfaObject.getNumberUsed()){ 

    a = new double[capacity]; 
    for (int i = 0; i < used; i++){ 
     a[i] = pfaObject.a[i]; 
    } 
} 

Не могли бы вы объяснить, что происходит в этом фрагменте кода? от начала до конца.

ответ

1

кажется довольно простым для меня.

Похоже, что ваш класс имеет элемент массива, называемый «a», размер которого известен с помощью функции funciton функции getcapacity(), а используемые элементы известны из getNumberUsed().

Таким образом, конструктор копирования получает размер и используемые элементы объекта для копирования в первой строке, вызывая соответственно эти функции-члены.

Затем он выделяет правильный размер памяти и выполняет прямую копию используемых элементов внутри вектора a, который должен быть контейнером новых данных.

Есть ли что-то, что вы не понимаете в частности?