В базовом и производном классах есть конструкторы без параметров.
В базовом классе конструктор отсутстивует, в производном создан без параметров
В базовом классе создан конструктор без параметров, в производном конструктор отсутствует.
В базовом и производном классе нет конструкторов.
Создаются пустые конструкторы в базовом и производном классе.
int main(int argc, char* argv[])
{
// вызов пустых конструкторов по умолчанию
Record x; // min, sec не определены
Sprint z; // min,sec,dec не определены
}
Аналогично на java:
class Record
{
protected int min,sec;
public void Init(int m,int s)
{
min=m;
sec=s;
}
}
class Sprint extends Record
{
private int dec;
public void Putdec(int d)
{
dec=d;
}
public void Init(int m,int s,int d)
{
min=m;
sec=s;
dec=d;
}
}
public class WorkSport
{
public static void main (String args[])
{
Record a=new Record(); // min,sec не определены
Sprint b=new Sprint(); // min,sec,dec не определены
}
}
class Record
{
private:
int min,sec;
public:
Record();
.........
};
Record::Record()
{
min=2;
sec=1;
}
class Sprint: public Record
{
private:
int dec;
public:
........
};
int main(int argc, char* argv[])
{
Record x; // вызов конструктора без параметров min=2, sec=1
|
|
Sprint z; // вызов базового конструктора Record min=2, sec=1, dec не определен
}
Аналогично на java:
class Record
{
protected int min,sec;
public Record() // конструктор без параметров базового класса
{
min=2;
sec=1;
}
}
class Sprint extends Record
{
private int dec;
public void Putdec(int d)
{
dec=d;
}
}
public class WorkSport
{
public static void main (String args[])
{
Record a=new Record(); // min=2, sec=1
Sprint b=new Sprint(); // min=2, sec=1 (вызов базового), dec не определен
}
}
class Record
{
private:
int min,sec;
public:
.........
};
class Sprint: public Record
{
private:
int dec;
public:
Sprint();
........
};
Sprint::Sprint()
{
min=3;
dec=2;
}
int main(int argc, char* argv[])
{
Record x; // пустой min, sec не определены
Sprint z; // min=3 dec=2, sec – не определен
}
Аналогично на java:
class Record
{
protected int min,sec;
}
class Sprint extends Record
{
private int dec;
public void Putdec(int d)
{
dec=d;
}
public Sprint()
{
min=3;
dec=2;
}
}
public class WorkSport
{
public static void main (String args[])
{
Record a=new Record(); // min,sec не определены
Sprint b=new Sprint(); // min=3 dec=2 sec не определен
}
}
class Record
{
private:
int min,sec;
public:
Record();
.........
};
Record::Record()
{
min=5;
sec=4;
}
class Sprint: public Record
{
private:
int dec;
public:
Sprint();
........
};
Sprint::Sprint()
{
min=3;
dec=2;
}
int main(int argc, char* argv[])
{
Record x; // min=5 sec=4
Sprint z; // min=3 dec=2 sec=4 – вызов базового конструктора
}
Аналогично на java:
class Record
{
protected int min,sec;
public Record()
{
min=5;
sec=4;
}
}
class Sprint extends Record
{
private int dec;
public void Putdec(int d)
{
dec=d;
}
public Sprint()
{
min=3;
dec=2;
}
}
public class WorkSport
{
public static void main (String args[])
{
Record a=new Record(); // min=5,sec=4
Sprint b=new Sprint(); // min=3 dec=2 sec=4 - вызов базового конструктора
}
}
class Record
{
private:
int min,sec;
public:
Record();
.........
};
Record::Record()
{
min=1;
sec=2;
}
class Sprint: public Record
{
private:
int dec;
public:
Sprint(int d);
........
};
Sprint::Sprint(int d)
{
dec=d;
}
int main(int argc, char* argv[])
{
Record x; // min=1 sec=2
Sprint z(5); // min=1 sec=2 dec=5 // сначала вызывается конструктор базового класса
|
|
}
Аналогично на java:
class Record
{
protected int min,sec;
public Record()
{
min=1;
sec=2;
}
}
class Sprint extends Record
{
private int dec;
public void Putdec(int d)
{
dec=d;
}
public Sprint(int d)
{
dec=d;
}
}
public class WorkSport
{
public static void main (String args[])
{
Record a= new Record(); // min=1,sec=2
Sprint b= new Sprint(5); // min=1,sec=2,dec=5
b.Putdec(4);
System. out. printf("%d", p);
}
}