何谓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的后方

1 bool  same_isbn( const  Sales_item  & rhs)  const ;


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

你可能感兴趣的:(function)