blob: 7fd1ecaee9ff0d00b4ab98a34c1bdc90c6498002 [file] [log] [blame]
struct my_struct
{
int one;
int other;
};
class Base
{
public:
Base (int in_my_var) : my_var (in_my_var) {}
virtual void incr_me (int amount)
{
my_var += amount;
}
private:
int my_var;
};
class Derived : public Base
{
public:
Derived (int in_my_var, int in_one, int in_other) : Base (in_my_var)
{
my_struct_ptr = new (my_struct);
my_struct_ptr->one = in_one;
my_struct_ptr->other = in_other;
};
private:
struct my_struct *my_struct_ptr;
};
int
pass_ref (Derived &input)
{
input.incr_me (5);
return 10;
}
int
pass_ref_ptr (Derived * &input_ptr)
{
input_ptr->incr_me (5);
return 10;
}
int
pass_base_ref (Base &input)
{
input.incr_me (5);
return 10;
}
int
main ()
{
Derived my_derived (5, 10, 20);
Derived *derived_ptr = new Derived (5, 10, 20);
pass_ref (my_derived);
pass_ref_ptr (derived_ptr);
pass_base_ref (my_derived);
return 0;
}