Re: warning missing
От | Thomas Hallgren |
---|---|
Тема | Re: warning missing |
Дата | |
Msg-id | 40D9E72E.1050407@mailblocks.com обсуждение исходный текст |
Ответ на | Re: warning missing (Gaetano Mendola <mendola@bigfoot.com>) |
Ответы |
Re: warning missing
|
Список | pgsql-hackers |
Gaetano Mendola wrote: > Thomas Hallgren wrote: > >> >> Speaking in generic OO terms, using inheritance, you cannot remove >> attributes that are present in the generalisation. If B inherits A, an >> instance of B is per definition also an instance of A. Thus, you must >> alwasy >> be able to cast a B into an A. In short, If you don't want the OID, you >> cannot inherit a something that has an OID. > > > This is not completely true: > > struct B > { > void foo(); > }; > > > class D : public B > { > private: > void foo(); > > public: > void bar(); > }; > > > as you can see a D "is a" B but the publich foo() doesn't > appartaint to D, at least an user of D could not use foo() > C++ is not exactly the model for OO semantics. It's a fairly wierd addition to C resulting in a hybrid language where quite a few constructs violates sane OO. Try to use a similar construct in a more elaborate OO-language (like Java, C#, etc.) and you will get an error like: "foo() in D cannot override foo() in B; attempting to assign weaker access privileges; was public" which makes a lot more sense. Kind regards, Thomas Hallgren PS. This discussion doesn't really belong here. I'd be happy to continue it off the list though.
В списке pgsql-hackers по дате отправления: