nevin1@ihlpf.ATT.COM (00704a-Liber) (06/11/88)
Try running this past your local C++ translator, and look at the code that is emitted: class oops { private: int value; public: oops() { value = 0; } oops operator++() { value = 1; return *this; } }; void ugh() { const oops readonly; readonly++; } You end up with something like this (the names have been changed to protect the humans :-)): struct oops { int value; }; void ugh() { struct oops readonly; readonly.value = 0; readonly = (readonly.value = 1, *(&readonly)); } Notice that a 'const'-declared structure is changing value here! Do we misunderstand something, is this intentional, or is this a bug (misfeature) in C++? Is this something that should go away when the ANSI C standard, and the introduction of 'const' into C, arrives? It's clear that (as has been discussed in this group earlier) function members cannot be declared to take "const className *this" instead of "className *this". It seems that this is more important in light of pathological cases like this, especially for native C++ compilers, since they may implement 'const' directly. ___ A joint posting from: Darin Adler (Apple) ..!sun!apple!darin Nevin Liber (AT&T) ..!ihnp4!ihlpf!nevin1 (send all email here; I will forward) These are our own personal opinions, and (probably) not those of Apple nor AT&T.