In C++, this pointer is passed as a hidden argument to all non-static member function calls. The type of this depends upon function declaration. If the member function of a class X is declared const, the type of this is const X* (see code 1 below), if the member function is declared volatile, the type of this is volatile X* (see code 2 below), and if the member function is declared const volatile, the type of this is const volatile X* (see code 3 below).
Code 1
1 #include2 class X 3 {4 void fun() const 5 {6 // this is passed as hidden argument to fun(). 7 // Type of this is const X* 8 }9 };
Code 2
1 #include2 class X 3 {4 void fun() volatile 5 {6 // this is passed as hidden argument to fun(). 7 // Type of this is volatile X* 8 }9 };
Code 3
1 #include2 class X 3 {4 void fun() const volatile 5 {6 // this is passed as hidden argument to fun(). 7 // Type of this is const volatile X* 8 }9 };
补充:
(1)In an ordinary nonconst member function, the type of this is a const pointer to the class type. We may change the value to which this points but cannot change the address that this holds. In a const member function, the type of this is a const pointer to a const class - type object. We may change neither the object to which this points nor the address that this holds.
(2)What is the purpose of a volatile member function in C++?【from stackoverflow】
References:
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
转载请注明:
2013-11-26 09:32:58