调用对象的任何函数都会在函数内部产生一个this指针,this指针是个常量指针,由编译器编译时生成。this指针只在对象内部可见,所以调用时你也无法访问this指针,更不需要。
this指针用于对象内部的函数访问当前对象的其他成员,同时可起到一定的提高阅读性的作用,当在函数内访问另一个同类对象的成员时可以区分开来,比如拷贝函数中当需要将形参对象的成员复制到本地对象成员时。
比如
MyClass(const MyClass & obj)
显然使用this->Value 比直接使用Value更直观地表明等号左侧的Value是当前对象的Value。
另外,顺便提一下,this指针的地址是每个函数开始时通过相对地址计算出来的,而不是传递进来的。
哦,那么拷贝构造函数里面有没有隐含的this啊?
追答有的。复制构造函数用已有的对象来初始化一个新的对象。
虽然 对象没有this指针。但按成员来复制的时候用得上的。
你是指编译器在调用构造函数时默认传递this指针?
追答是啊