C++中的this指针
this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。
this指针是类的指针,指向对象的首地址。
this指针只能在成员函数中使用,在全局函数、静态成员函数中都不能用this。
this指针只有在成员函数中才有定义,且存储位置会因编译器不同有不同存储位置
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部, 当在类的非静态成员函数中访问类的非静态成员的时候(全局函数,静态函数中不能使用this指针), 编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针, 编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this 进行
在 C++中,一个重要的概念是保留的关键字 this。在类中,关键字 this 包含当前对象的地址,换句话说, 其值为&object。 当您在类成员方法中调用其他成员方法时, 编译器将隐式地传递 this 指针—函数调用中不可见的参数:
class Human
{
private:
void Talk (string Statement)
{
cout Statement;
}
public:
void IntroduceSelf()
{
Talk("Bla bla"); // same as Talk(this, "Bla Bla")
}
};
在这里,方法 IntroduceSelf( )使用私有成员 Talk( )在屏幕上显示一句话。实际上,编译器将在调用Talk 时嵌入 this 指针,即 Talk(this, “Blab la”)。
从编程的角度看, this 的用途不多,且大多数情况下都是可选的。例如,在程序中,可将 SetAge( )中访问 age 的代码修改成下面这样:
void SetAge(int humansAge)
{
this->age = humansAge; // same as age = humansAge
}
注意:
调用静态方法时,不会隐式服务器托管网地传递 this 指针,因为静态函数不与类实例相关联,而由所有实例共享。
要在静态函数中使用实例变量,应显式地声明一个形参,并将实参设置为 this 指针。
该文章会更新,欢迎大家批评指正。
推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
中冷热分离的随机索引模块详解 一、背景介绍 的冷热分离架构 的冷热分离架构是指在消息存储上,将冷数据和热数据分别存储在不同的存储介质中,以提高消息的读写性能和存储成本效率。在这个二级标题中,我们将详细介绍 RocketMQ 冷热分离架构的原理和优势。首先,我们…