您的位置:首页 > 编程语言 > C语言/C++

Type of 'this' pointer in C++

2013-11-26 09:37 423 查看
  

  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

#include<iostream>
class X
{
void fun() const
{
// this is passed as hidden argument to fun().
// Type of this is const X*
}
};


  Code 2

#include<iostream>
class X
{
void fun() volatile
{
// this is passed as hidden argument to fun().
// Type of this is volatile X*
}
};


  Code 3

#include<iostream>
class X
{
void fun() const volatile
{
// this is passed as hidden argument to fun().
// Type of this is const volatile X*
}
};


  补充:

  (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:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf

  Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
      

  转载请注明:http://www.cnblogs.com/iloveyouforever/  

  2013-11-26  09:32:58
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: