Hi

I have an abstract class whose some of member functions accepts parameters of type as the same abstract class.
Code:
class virtualC {
public:
  virtual void function1() = 0;
  virtual string function2(virtualC &k) = 0;
};
My question is, why do I have to pass a reference instead of object itself?

Thanks in advance