This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/24058] New: g++ should warn about virtual methods called in constructors and destructors
- From: "tron dot thomas at verizon dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Sep 2005 22:33:03 -0000
- Subject: [Bug c++/24058] New: g++ should warn about virtual methods called in constructors and destructors
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
When all warnings are enabled the g++ compiler should warn when a virtual method is called in a
constructor or destructor for the class containing the virtual method.
Steps:
1. Compile the following using the command: g++ -g -Wall -ansi -pedantic -c
#include <iostream>
class Base
{
public:
Base() { Method(); }
virtual ~Base() {}
protected:
virtual void Method() { std::cout << "Base method.\n"; }
};
class Derived : public Base
{
public:
Derived() { Method(); }
protected:
void Method() { std::cout << "Derived method.\n"; }
};
Results:
The code compiles with no errors or warnings
Expected:
The call to Method in the Derived constructor will call Base::Method, and not Derived::Method because
Derived is not constructed and available for use yet. The compiler should warn about these kinds of
virtual methods calls in constructors as the program may not yield the kind of results the developer is
expecting.
--
Summary: g++ should warn about virtual methods called in
constructors and destructors
Product: gcc
Version: 4.0.1
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tron dot thomas at verizon dot net
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24058