C++编程指向成员的指针以及this指针的基本使用指南

2020-01-06 14:28:00王旭

输出:


my buffer
your buffer

this 指针的类型
通过 const 和 关键字,可以在函数声明中修改 volatilethis 指针的类型。若要将函数声明为具有一个或多个关键字的特性,请将关键字添加到函数参数列表的后面。
请看以下示例:


// type_of_this_pointer1.cpp
class Point
{
 unsigned X() const;
};
int main()
{
}

上面的代码声明一个成员函数 X,其中,this 指针被视为指向 const 对象的 const 指针。可以使用 cv-mod-list 选项的组合,但它们始终通过 this 修改指向的对象,而不是 this 指针本身。因此,以下声明将声明函数 X;this 指针是指向 const 对象的 const 指针:


// type_of_this_pointer2.cpp
class Point
{
 unsigned X() const;
};
int main()
{
}

成员函数中 this 指针的类型由以下语法描述,其中,cv-qualifier-list 是从成员函数声明符中确定的,可以是 const 和/或 volatile,而 class-type 是类的名称:


[cv-qualifier-list] class-type * const this

换言之,this 始终是 const 指针;无法重新指派它。成员函数声明中使用的 const 或 volatile 限定符适用于由该函数范围中的 this 指向的类实例。
下表介绍了有关这些修饰符的工作方式的更多信息。
this 修饰符的语义

修饰符
含义
const 不能更改数据成员;无法调用不是 const 的成员函数。
volatile 每次访问成员数据时,都会从内存中加载该数据;禁用某些优化。

将 const 对象传递给不是 const 的成员函数是错误的。同样,将 volatile 对象传递给不是 volatile 的成员函数也是错误的。