說我有一類Foo
有它返回一個非const引用的成員函數,它本身運行使用一個const this
指針的成員函數:怎麼辦成員函數傳遞「this」指針
class Foo{
public:
Foo& display(std::ostream& os) { do_display(os); return *this; }
private:
void do_display(std::ostream& os) const { os << contents; }
std::string contents;
}
當display
運行do_display
時,this
指針被隱式轉換爲指向const的指針。那爲什麼當do_display
終止時,display
仍然能夠改變它被調用的對象?據我所知,無法正常指定一個指向非const的指針的指針。任何見解都會被讚賞。
你可以認爲它像一個參數。如果它爲一個函數添加了'const',那不會影響調用者。 – chris
只有'do_display'不能更改對象。 'display'可以。這裏沒有魔術,因爲'this'是作爲第一個(隱藏的)參數傳遞的。 – zoska
非const方法可以更改對象,即使它們調用一個const對象也是如此。方法就像另一個帶有隱藏的「第一個」參數的函數。 – Medinoc