(原創) 何谓const member function? (C/C++)

const member function是C++独有的,(C语言、C#皆没有,但Java不确定),事实上,C++是一个非常重视const的语言,很多地方都可见到const的踪迹。

const member function的目的在宣告此function不能更动任何data member的资料,若在const member function更动了data member的资料,compile会error。

为什么需要const member function这个机制?在Interfaced Oriented Design的概念中,Interface和Class Implementation是分开的,Interface由Architect所制定,然后由Developer去implement Class,若Architect确定某个member function『一定』不会去变动data member上的数据,为了避免Developer不小心在member function改了data member的数据,造成日后debug困难,即可宣告该member function为const member function,如此compiler将协助我们注意该member function是否不小心改了data member上的资料,这是C++ compiler非常贴心之处。

另外,const member function的语法比较奇怪,这个modifier竟然修饰在function的后方

1bool same_isbn(const Sales_item &rhs) const;


我曾在课堂上问过老师,为什么const是在后面,似乎不像C like language的语法,老师的回答是,因为若写成const bool same_isbm()或bool const same_isbm(),似乎代表return值为const,因为没有其它地方可以放,只好将const放在function后面。

posted on 2006-11-16 02:31  真 OO无双  阅读(9050)  评论(1编辑  收藏  举报

导航