c++/6058: c++: object is not created
Alexander Zvyagin
Alexander.Zviagine@cern.ch
Tue Mar 26 02:46:00 GMT 2002
>Number: 6058
>Category: c++
>Synopsis: c++: object is not created
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Mar 26 02:46:08 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:
>Release:
>Organization:
>Environment:
>Description:
Category: c++
Ofriginator: Alexander Zvyagin
Organization: LMU
Synopsis: an object of a C++ class is not created
Severity: serious
Priority: medium
Class: wrong-code
Release: 3.0.4
Environment: Linux lxplus015 2.2.19-6.2.1.1smp #1 SMP Tue Apr 17 20:00:04 CEST 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../configure --prefix=/afs/cern.ch/compass/delivery/tools/gcc-3.0.4
Description:
The code shown below should create three objects of the class TT. But only two objects
are created (there are only two calls for constructor/destructor).
// File constructors.cc
#include <iostream>
using std::cout;
class TT
{
public:
~TT (void ) {cout << "D\n";}
TT (void ) : c(' ') {cout << "C\n";}
TT (char cc) : c(cc ) {cout << "C " << c << "\n";}
char c;
};
int main()
{
cout << "1\n";
TT();
cout << "2\n";
TT t2('a');
cout << "3\n";
TT t3(); // The object is not created!!!
cout << "4\n";
TT t4; // OK!
cout << "5\n";
}
// EOF
Output:
$ ./a.out
1
C
D
2
C a
3
4
C
5
D
D
So the object 't3' was not created.
How-To-Repeat:
$ g++ constructors.cc
$ ./a.out
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-prs
mailing list