[prog] [C] strings bug

Jimen Ching jching at flex.com
Fri Apr 11 00:19:20 EST 2003


On Fri, 11 Apr 2003, Dan Richter wrote:
>   int a();

How do you know whether this is a function prototype declaration or a
variable declaration?  According to the ANSI C++ standard, this is a
function prototype declaration.  I.e. 'a' is a function taking void, and
returning int.

>   int* p = new int();

This is valid, and GCC 2.95.4 handles it just fine.

>I would also note that, with the GCC, all ints allocated using "new" are
>automatically initialized to zero.

Only for the case of:

	int *i = new int();

which calls the default constructor, which sets the variable to zero.
Without the parenthesis, the returned memory is uninitialized.  See
section 8.5 of ISO/IEC 14882.

>But let me finish by saying that depending on automatic intialization is
>a really bad idea.

C++ gives you a rope to shoot your leg off.  But if you know how to use
the rope...

--jc
-- 
Jimen Ching (WH6BRR)      jching at flex.com     wh6brr at uhm.ampr.org


More information about the Programming mailing list