I think we should add a rule like "a const member function should never return non-const pointer/reference".
I have seen the problem in many places that you can get non-const reference on a const object. For example, InlineTextBox has InlineTextBox* prevTextBox() const; InlineTextBox* nextTextBox() const; Assume you have a function: void myFunction(const InlineTextBox* textBox) When the text box has a sibling, you can easily get a non-const pointer by calling textBox->nextTextBox()->prevTextBox(), which sounds ridiculous. 2011/5/31 Geoffrey Garen <gga...@apple.com>: >>>> Even in a class that is used in a tree, I still think simple member >>>> variable accessor methods (that do not return tree neighbors) should be >>>> const. >>> >>> OK. Why? >> >> Because it indicates to me and the compiler, that the method doesn't have >> side effects. > > A const member function can have side effects. It can modify any global state > outside the object. It can also modify sub-objects inside the object, and > return non-const references to sub-objects and related objects that might be > used to produce side-effects at any time. > > It's exactly statements like this that make me think that const member > functions are a bad idea -- people think they provide a guarantee, but they > don't. > > Geoff > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev