Re: Can I have Pure Virtual Destructor?
No, making a function a pure virtual does not prevent you from
implementing it. All it does is to require that ever derived concrete
class has an implementation (possibly inherited from an intermediate
derived class)
That's right, but maybe a bit confusing. What it means is that
until at least one class on a direct path from the most derived
class to the base class has a user declared (and defined)
destructor, the class is abstract, and cannot be instantiated.
What declaring the destructor pure virtual does, in practice, is
to require every derived class to provide a user defined
destructor, even when it wouldn't need one otherwise.
Hi,
is that true? I mean, every class not declaring a destructor, declares
and defines it implicitly. And that should also be the case with a
class deriving from a class declaring a pure virtual destructor, isn't
it? The following code compiles fine with gcc version 4.0.2 and
comeau's online compiler and seems to support my guess:
<code>
struct test1 {
public:
virtual ~test1()=0;
};
test1::~test1()
{}
struct test2:test1 {
};
test2 t2;
</code>
Does anyone know what the standard has to say in this regard?
Bye
Norbert
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]