C++常量指针this

来源:互联网 发布:博彦科技大数据 编辑:程序博客网 时间:2024/06/06 07:37

在成员函数内部可以用指针常量this来访问与成员函数的调用相关联的对象(this是一个关键字)。

假设我们已经设计了一个File类,它有一个成员函数copy,该函数定义如下:

void File::copy(File& dest){if(this == &dest)  //can't copy File to itselfreturn;//otherwise, copy this File to dest//...}
if语句用来对如下调用进行检测:

f1.copy(f1);
在这里f1是File的对象,f1以它本身作为参数,调用自己的copy成员函数。copy成员函数中的if语句就是用来防止将一个文件拷贝到它自身这样不合理的做法,其检测方法是判断this与&dest是否指向相同的对象。在实际编程中这是一种常用的检测手段。

this指针是一个常量,它不能作为赋值、递增、递减等运算的目标对象。此外this只在非static成员函数中用才有效。

class C{public:void m(const C& obj){this = &obj; //**** ERROR; this is a constant//...}static void s(){this->count = 0; //**** ERROR; static method!}private:static int count;};
本例有两个错误,在成员函数m中,我们试图给常量this赋值是错误的;而在static成员函数s中,我们试图访问this也是错误的。


0 0
原创粉丝点击