关于const几个小问题请问!
关于const几个问题请教!!const stock & stock::topal(const stock & s)const请问这几个const有什么作用!!!
关于const几个问题请教!!
const stock & stock::topal(const stock & s)const
请问这几个const有什么作用!!!!尤其是第一个和最后一个const!!如果没有第一个const,和最后一个const会出现什么情况?
[解决办法]
第一个const,表示这个函数返回的引用不能被修改
第二个const,表示函数内部不能修改s
最后一个const,表示这是一个const成员函数
[解决办法]
[解决办法]const stock & stock::topal(const stock & s)const
const stock & s 限定了参数,表示形式参数在函数的执行过程中值不能被修改
const stock & stock::topal 限定了返回值是一个常引用,函数返回后不能改变
最后一个const限定了*this,也就是说成员函数的*this前有const限定,因此成员函数在执行过程中不能修改数据成员的值。
NOTE:
如果是常成员函数,而你的返回值没有const限定,意味着函数返回后,有可能通过返回的引用修改数据成员,而这样就违背了常成员函数数据成员不能被修改的特性,因此后面有const的话,限定返回值的const就不能省略。
[解决办法]我给你解释一下;
第二个const 做实参,避免复制实参,且又不修改实参。
第三个const,表明你这函数是类的成员函数,这个成员函数中,不能修改这个类的成员变量。
第一个const,最让人迷糊 上面虽然都在说表示这个函数返回的引用不能被修改,谁能真正理解这句话
我个人认为,返回为const int&与返回int&是一样的
至于类 没研究过