eggert@burns.twinsun.com (Paul Eggert) (09/14/89)
G++ 1.35 ignores initializers of `new' if no constructor is defined for the corresponding class. An error message should be issued instead. Here is an example. struct complex { int re, im; }; main() { complex *zp1 = new complex(5,10); return zp1->re; } `main()' yields garbage (that happens to be zero) when compiled by G++ 1.35 (Sun-3/50 + SunOS 4.0.3). Here is the Sun-3 assembly language output: #NO_APP gcc_compiled.: .text .even .globl _main _main: link a6,#-4 pea 8:w jbsr ___builtin_new movel d0,a6@(-4) movel a6@(-4),a0 movel a0@,d1 movel d1,d0 jra L1 L1: unlk a6 rts The 5 and 10 were silently ignored. Instead, the error message "constructor syntax used, but no constructor declared for type `complex'" should have been issued. Such a message is correctly issued for the following program, which makes a similar error without `new'. struct complex { int re, im; }; main() { complex zp1(5,10); return zp1.re; }