Как сделать конструктор копирования в производном классе?

#include <iostream>
#include <cstdlib>
using namespace std;
class Test{
    private:
        string name;
        double mas;
    public:
        Test(string a, double b){
            name=a;
            mas=b;
            get();
        };
        ~Test(){
            cout<<"Destructor worked in class Test!\n";
        }
    virtual void get(){
        cout << "Name = " << name << " " << "Mas = " << mas<<" ";
    };
};
class Test1: public Test{
    private:
        int num, qual, ost;
        double data;
    public:
    Test1(string a="Name_test", double b=0):Test(a,b){
            num=12;
            qual=133413;
            ost=959;
            data=12.02;
            get();
        };
    Test1(string a, double b, double j, int c, int e, double f):Test(a,b){
            num=j;
            qual=c;
            ost=e;
            data=f;
            get();
    };
    Test1(const Test1 &cop){
        
    };
    void get(){
        cout << "Number = " << num << " " << "Qual = " <<qual << " " <<"Ostatok = "<<ost<< " "<<"Data = "<<data<< endl;
    };
};
int main() {
    double priv;
    string str;
    cout << "Enter name and mas:"; 
    cin >> str >> priv;
    Test *fourth = new Test(str, priv);
    delete fourth;
    Test1 test01;
    Test1 test02("Yes", 1, 155453, 0,555, 25.02);
    return 0;
}

Есть у меня основной класс с конструктором с параметрами и производный от него с конструктором по умолчанию и конструктором с параметрами, я хочу сделать конструктор копирования в производном классе "Test1", не понимаю как это сделать.


Ответы (1 шт):

Автор решения: Harry

Для начала нужен конструктор копирования в родительском классе:

Test(const Test& t):name(t.name),mas(t.mas) {}

Можно и без него, тогда будет использоваться сгенерированный компилятором. В вашем конкретном случае это нормально.

После этого можно писать конструктор копирования дочернего класса:

Test1(const Test1 &cop):Test(cop),num(cop.num),qual(cop.qual),ost(cop.ost),data(cop.data){}

И опять же, если его не написать — в вашем конкретном случае сгенерированный компилятором конструктор нормально отработает.

Собственно, это все.

→ Ссылка