想请教有关C++的const问题!

来源:百度知道 编辑:UC知道 时间:2024/06/29 23:26:44
请问在一个类中,定义成员函数:
const Screen& display(std::ostream &os) const
{ do_display(os); return *this; }
这前面的const跟后面的const有什么区别?
如果:
const Screen& display(std::ostream &os)
{ do_display(os); return *this; }
这样叫什么函数?

Screen& display(std::ostream &os) const
{ do_display(os); return *this; }
这样又叫做什么函数?

请麻烦高手们帮帮小弟!万分感激!
最好能详细一点说明...谢谢各位!

const Screen& display(std::ostream &os)
{ do_display(os); return *this; }
这种就是普通的成员函数,只不过返回值被const修饰
这么做是为了避免display返回值被修改。如果没有const
你把display的返回值付给一个变量,这个变量就拥有了返回值的引用,如果你修改这个变量,等于修改返回值。
这样会造成变量的生命周期不同步。有const只是返回一个复制。
Screen& display(std::ostream &os) const
{ do_display(os); return *this; } 这种叫常量成员函数。一般来说表示此函数不对对象的数据进行修改

前面的const表示函数的返回值是。。。的常引用
后面的const表示这个函数是常成员函数,可以调用常数据成员