code:
class cl {
public double a,b;
// A normal parametrized constructor
public cl(int a,int b) {
this.a = a;
this.b = b;
}
// copy constructor
cl(cl c) {
System.out.println("Copy constructor called");
a = c.a;
b = c.b;
}
void f()
{
System.out.println(a+" "+b);
}
}
public class Main {
public static void main(String[] args) {
cl c1 = new cl(10, 15);
// Following involves a copy constructor call
cl c2 = new cl(c1);
c1.f();
c2.f();
System.out.println("xxxxxxxxxxxxx");
c1.a=5;
c1.f();
c2.f();
// Note that following doesn't involve a copy constructor call as
// non-primitive variables are just references.
cl c3 = c2;
System.out.println("xxxxxxxxxxxxx");
c3.f();
c2.f();
c1.f();
System.out.println("xxxxxxxxxxxxx");
c2.a=6;
c1.f();
c2.f();
c3.f();
System.out.println("xxxxxxxxxxxxx");
c3.a=7;
c1.f();
c2.f();
c3.f();
System.out.println("xxxxxxxxxxxxx");
c1.a=8;
c1.f();
c2.f();
c3.f();
}
}
output::
class cl {
public double a,b;
// A normal parametrized constructor
public cl(int a,int b) {
this.a = a;
this.b = b;
}
// copy constructor
cl(cl c) {
System.out.println("Copy constructor called");
a = c.a;
b = c.b;
}
void f()
{
System.out.println(a+" "+b);
}
}
public class Main {
public static void main(String[] args) {
cl c1 = new cl(10, 15);
// Following involves a copy constructor call
cl c2 = new cl(c1);
c1.f();
c2.f();
System.out.println("xxxxxxxxxxxxx");
c1.a=5;
c1.f();
c2.f();
// Note that following doesn't involve a copy constructor call as
// non-primitive variables are just references.
cl c3 = c2;
System.out.println("xxxxxxxxxxxxx");
c3.f();
c2.f();
c1.f();
System.out.println("xxxxxxxxxxxxx");
c2.a=6;
c1.f();
c2.f();
c3.f();
System.out.println("xxxxxxxxxxxxx");
c3.a=7;
c1.f();
c2.f();
c3.f();
System.out.println("xxxxxxxxxxxxx");
c1.a=8;
c1.f();
c2.f();
c3.f();
}
}
output::
$javac Main.java $java -Xmx128M -Xms16M Main Copy constructor called 10.0 15.0 10.0 15.0 xxxxxxxxxxxxx 5.0 15.0 10.0 15.0 xxxxxxxxxxxxx 10.0 15.0 10.0 15.0 5.0 15.0 xxxxxxxxxxxxx 5.0 15.0 6.0 15.0 6.0 15.0 xxxxxxxxxxxxx 5.0 15.0 7.0 15.0 7.0 15.0 xxxxxxxxxxxxx 8.0 15.0 7.0 15.0 7.0 15.0
No comments:
Post a Comment