------------- PART 1 ------------ Accessing static member: 0 Property={id=0, price=300000, lot_size=10000, water_access=0} constructed Property={id=0, price=200000, lot_size=10000, water_access=0} Property={id=1, price=200000, lot_size=10000, water_access=0} copy_constructed Property={id=1, price=200000, lot_size=10000, water_access=0} ------------- PART 2 ------------ Property={id=2, price=300000, lot_size=10000, water_access=0} constructed Property={id=2, price=150000, lot_size=10000, water_access=0} Property={id=2, price=150000, lot_size=10000, water_access=0} destructed *p_int 3 *p_int2 3 p_array[3] 3 Array test Property={id=3, price=600000, lot_size=20000, water_access=0} constructed Property={id=4, price=600000, lot_size=20000, water_access=0} constructed Property={id=5, price=600000, lot_size=20000, water_access=0} constructed Property={id=6, price=600000, lot_size=20000, water_access=0} constructed Property={id=7, price=600000, lot_size=20000, water_access=0} constructed Property={id=8, price=600000, lot_size=20000, water_access=0} constructed Property={id=9, price=600000, lot_size=20000, water_access=0} constructed Property={id=10, price=600000, lot_size=20000, water_access=0} constructed Property={id=11, price=600000, lot_size=20000, water_access=0} constructed Property={id=12, price=600000, lot_size=20000, water_access=0} constructed Iterating over array: Property={id=3, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=4, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=5, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=6, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=7, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=8, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=9, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=10, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=11, price=600000, lot_size=20000, water_access=0} Iterating over array: Property={id=12, price=600000, lot_size=20000, water_access=0} Property={id=12, price=600000, lot_size=20000, water_access=0} destructed Property={id=11, price=600000, lot_size=20000, water_access=0} destructed Property={id=10, price=600000, lot_size=20000, water_access=0} destructed Property={id=9, price=600000, lot_size=20000, water_access=0} destructed Property={id=8, price=600000, lot_size=20000, water_access=0} destructed Property={id=7, price=600000, lot_size=20000, water_access=0} destructed Property={id=6, price=600000, lot_size=20000, water_access=0} destructed Property={id=5, price=600000, lot_size=20000, water_access=0} destructed Property={id=4, price=600000, lot_size=20000, water_access=0} destructed Property={id=3, price=600000, lot_size=20000, water_access=0} destructed ------------- PART 3 ------------ Testing copy constructor Property={id=13, price=200000, lot_size=10000, water_access=0} copy_constructed Property={id=13, price=200000, lot_size=10000, water_access=0} ------------- PART 4 ------------ Passing arguments by value or by reference Property={id=14, price=200000, lot_size=10000, water_access=0} copy_constructed Inside by value: Property={id=14, price=200000, lot_size=10000, water_access=0} Property={id=14, price=200000, lot_size=10000, water_access=0} destructed Inside by reference: Property={id=13, price=100, lot_size=10000, water_access=0} After call by reference: Property={id=13, price=100, lot_size=10000, water_access=0} Property={id=13, price=100, lot_size=10000, water_access=0} destructed Property={id=1, price=200000, lot_size=10000, water_access=0} destructed Property={id=0, price=200000, lot_size=10000, water_access=0} destructed