在 c++ class 宣告中, 如果方法(method)傳回的是 this 指標, 該方法傳回型態就必須宣告成物件指標 *, 之後可以方便利用箭頭符號 -> 繼續串接(chain)該物件的其他方法, 但如果想用句點來串接又不希望複製物件本身, 那就要將該方法的傳回型態宣告成物件別名 &, 最後 return *this, 這樣就能利用句點符號繼續串接呼叫其他方法:
// method chain example
class myObject {
myObject( ) {
// constructor
}
myObject* self_pointer( ){
// ...
return this; // method chain by pointer ->
}
myObject& self_object( ){
// ...
return *this; // method chain by object .
}
void other_method( ) {
// other method
}
}
int main(void ) {
auto ptr = new myObject( ); // return this is a pointer
auto obj = myObject( ); // return *this is an object
ptr -> self_pointer() -> other_method( ) ; // call other method by pointer ->
obj.self_object().other_method( ) ; // call other method by object .
}
沒有留言:
張貼留言