Как сделать конструктор копирования в производном классе?
#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){}
И опять же, если его не написать — в вашем конкретном случае сгенерированный компилятором конструктор нормально отработает.
Собственно, это все.