Re: references as null
On 1 Dec., 14:22, Rahul <sam_...@yahoo.co.in> wrote:
On Dec 1, 6:19 pm, Rahul <sam_...@yahoo.co.in> wrote:
On Dec 1, 5:58 pm, Kira Yamato <kira...@earthlink.net> wrote:
On 2007-12-01 07:34:51 -0500, Rahul <sam_...@yahoo.co.in> said:
Hi Everyone,
I was wondering if there is any way to have a reference initialized
to NULL just like a pointer.
I suppose you can try
Object &x = *(Object *)0;
And then you can test for NULL reference with
if (&x == 0) ...
But just because you could, should you?
--
-kira
I just wanted to know the possibility of passing a NULL reference to a
copy constructor and as per your code i'm able to do so and vc++ is
crashing :-)
class copu
{
int j;
public:
copu(const copu& obj)
{
printf("in copy constructor...%d\n",j);
j = obj.j; //-> crash over
here ;-)
printf("in copy constructor...2. %d\n",j);
}
copu()
{
j = 10;
printf("in default constructor...%d\n",j);
}
};
int main()
{
copu obj;
copu& ref = *(copu*)0;
copu sam = ref; //-> invokes the copy constructor
}
So is there anyway to avoid referring to a variable of a NULL
reference? A developer of a class should consider this for a robust
class, he can't expect the user of the class to do the correct things.
I just want to have a graceful exit from the copy constructor...
The problem with the code above is that you invoke undefined behaviour
by dereferencing a null pointer. This code is not worth bothering
about (the program becomes invalid at that point), so there is no
reason and no need to check for this.
/Peter