Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #13424
| Date | 2012-01-16 23:39 +0000 |
|---|---|
| From | Leigh Johnston <leigh@i42.co.uk> |
| Newsgroups | comp.lang.c++ |
| Subject | Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. |
| References | (9 earlier) <jf1t1e$538$1@adenine.netfront.net> <iZudnd3HOcZeFInSnZ2dnUVZ8sudnZ2d@giganews.com> <jf22hj$8np$1@adenine.netfront.net> <8YydncgNDvB9DInSnZ2dnUVZ8oGdnZ2d@giganews.com> <jf2b8u$f22$1@adenine.netfront.net> |
| Message-ID | <bqGdnd40oMTSKInSnZ2dnUVZ7tKdnZ2d@giganews.com> (permalink) |
On 16/01/2012 23:18, Paul <pchrist wrote:
> "Leigh Johnston"<leigh@i42.co.uk> wrote in message
> news:8YydncgNDvB9DInSnZ2dnUVZ8oGdnZ2d@giganews.com...
>> On 16/01/2012 20:49, Paul<pchrist wrote:
>>> "Leigh Johnston"<leigh@i42.co.uk> wrote in message
>>> news:iZudnd3HOcZeFInSnZ2dnUVZ8sudnZ2d@giganews.com...
>>>> On 16/01/2012 19:15, Paul<pchrist wrote:
>>>>> "Leigh Johnston"<leigh@i42.co.uk> wrote in message
>>>>> news:Ze6dneM27chs94nSnZ2dnUVZ8sednZ2d@giganews.com...
>>>> [snip]
>>>>>> A pure virtual function with a definition is not "just an Interface";
>>>>>> a
>>>>>> pure virtual function with a definition is simply a virtual function
>>>>>> that
>>>>>> must be overridden.
>>>>>
>>>>> It's still a pure virtual function, but it provides a default
>>>>> definition.
>>>>> However that default definition must be invoked from a non abstract
>>>>> derived
>>>>> class thus preserving the interface concept of PVF's.
>>>>>
>>>>>> Just because a virtual function must be overridden does not mean
>>>>>> that
>>>>>> it
>>>>>> makes no sense for its own implementation to be called within the
>>>>>> context
>>>>>> of the class's ctor or dtor; what makes sense depends on the overall
>>>>>> object oriented design of the system of which the virtual function
>>>>>> plays
>>>>>> a
>>>>>> part.
>>>>>>
>>>>> Now wait, you have evolved to suggest that the PVF is now simply a
>>>>> normal
>>>>> virtual function that must be overridden but this is not the case.
>>>>>
>>>>> A normal virtual function is inherited and thus can be overridden. With
>>>>> a
>>>>> PVF there is no inheritence so it cannot be overridden, i.e:
>>>>>
>>>>> class Base{
>>>>> public:
>>>>> virtual void foo();
>>>>> };
>>>>> void Base::foo(){std::cout<<"Base foo...\n";}
>>>>>
>>>>> class Derived : public Base{
>>>>> public:
>>>>> //virtual void foo(){std::cout<<"Derived foo..\n";}
>>>>> };
>>>>>
>>>>> int main(){
>>>>> Derived d;
>>>>> Base* bp =&d;
>>>>> bp->foo();
>>>>> }
>>>>>
>>>>> The above shows how the normal virtual function is inherited and if
>>>>> Derived::foo is uncommented it would override the Base::foo. But if you
>>>>> make
>>>>> Base:foo pure virtual, Derived won't inherit Base::foo at all. If
>>>>> Base::foo
>>>>> is pure virtual it must be *implemented*, not overridden, in Derived:
>>>>
>>>> What garbage. My use of the term "overridden" is not incorrect and pure
>>>> virtual functions can be inherited.
>>>
>>> You can't inherit the definition, if I am wrong show me some code that
>>> does
>>> this.
>>
>> Wrong; see below.
>>
>>>
>>>>
>>>> From "C++ In A Nutshell":
>>>>
>>>> "A derived class can override a pure virtual function and provide a body
>>>> for it, override it and declare it pure again, or simply inherit the
>>>> pure
>>>> function."
>>>>
>>> This is talking about inheriting the pure virtual function, as a PVF
>>> without
>>> a definition. This is not talking about inheriting and overridding the
>>> definition of a PVF , which is what you were talking about.
>>
>> No it isn't; you don't know what you are talking about as usual. Whether
>> or not a pure virtual function has a definition has no bearing on the fact
>> that it must be implemented in some derived class or on how it is
>> inherited. Some code:
>>
>> struct foo
>> {
>> virtual void f() = 0;
>> };
>>
>> void foo::f() {}
>>
>> struct bar : foo
>> {
>> // does bar inherit foo::f()?
>> };
>>
>> struct baz : bar
>> {
>> virtual void f() { bar::foo(); } // yes, bar does inherit foo::f().
>> };
>>
> Ok so you can inherit the definition, but still not in the way I
> represented( inherited to an instantiatable class). Which was a very
> important aspect of what I represented because after all this is the point
> where the PVF must be implemented.
What is "inherited to an instantiatable class" supposed to mean? Nobody
has suggested that an abstract class can be instantiated however a
partially constructed object of type abstract base class can exist.
>
> So you are still incorrect to suggest that a PVF is just a virtual function
> that must be overridden, because it is certainly alot different than that.
I am not still incorrect. A pure virtual function is a simply a virtual
function that must be implemented in a derived class, nothing more and
the standard should reflect this. You have yet to answer the original
question I posed which is to provide a rationale as to why the standard
makes it UB to make a virtual call to a pure virtual function that has a
definition.
/Leigh
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-14 23:06 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Goran <goran.pusic@gmail.com> - 2012-01-14 22:21 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-15 02:25 -0600
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-15 14:07 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-15 13:13 -0600
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-01-15 09:29 +0100
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-15 14:16 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-01-15 15:25 +0100
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-15 14:30 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. gwowen <gwowen@gmail.com> - 2012-01-16 01:57 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-01-16 11:28 +0100
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 11:29 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. gwowen <gwowen@gmail.com> - 2012-01-16 03:21 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 12:04 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 12:52 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 14:14 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 14:26 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 16:14 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 16:37 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 18:02 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 18:22 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 19:15 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 20:34 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 20:41 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 20:49 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 21:08 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 21:11 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 23:18 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 23:39 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-16 23:48 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-16 23:57 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-17 12:24 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-17 14:11 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. gwowen <gwowen@gmail.com> - 2012-01-17 06:43 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-17 14:52 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. gwowen <gwowen@gmail.com> - 2012-01-17 07:22 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-17 16:35 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-17 16:40 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-17 17:30 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-18 10:38 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-18 11:57 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-18 12:49 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. gwowen <gwowen@gmail.com> - 2012-01-17 08:59 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-17 17:03 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-17 11:34 -0600
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-17 12:14 -0600
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Gareth Owen <gwowen@gmail.com> - 2012-01-18 06:37 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-18 13:08 -0600
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-18 13:14 -0600
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-17 15:50 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-17 15:59 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-17 16:09 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. jgk@panix.com (Joe keane) - 2012-01-17 16:13 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. scott@slp53.sl.home (Scott Lurndal) - 2012-01-18 18:11 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. gwowen <gwowen@gmail.com> - 2012-01-16 06:34 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Gil <vnicula@gmail.com> - 2012-01-16 20:55 -0800
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-17 17:58 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. scott@slp53.sl.home (Scott Lurndal) - 2012-01-18 18:12 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Leigh Johnston <leigh@i42.co.uk> - 2012-01-18 19:00 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-18 22:00 +0000
Re: Rationale for base class pure virtual function call from ctor/dtor being undefined behaviour. Gareth Owen <gwowen@gmail.com> - 2012-01-19 06:22 +0000
csiph-web