C语言中,this指针在类成员函数中具体指向什么?

2026-04-29 13:051阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计947个文字,预计阅读时间需要4分钟。

C语言中,this指针在类成员函数中具体指向什么?

指向调用该函数的对象的首个地址,不是类定义的位置,也不是栈上随意一个地址——即是 `obj.func()` 中的 `obj` 在内存中的起始位置。

注意:哪怕函数是 constnoexcept 修饰的,this 类型也会跟着变:const MyClass*MyClass* noexcept 的 this 类型会不同,但值仍是对象地址。

  • this 是隐式参数,不占函数签名,所以重载不能靠 this 的 const 性区分(得靠成员函数自身的 const 限定符)
  • 静态成员函数没有 this,写 this->xxx 直接编译报错:error: 'this' is unavailable for static member functions
  • 在构造函数体中,this 已有效,但此时对象尚未完全构造完毕;访问虚函数或未初始化成员可能引发未定义行为

为什么 this 不能被取地址或赋值?

因为 this 是右值(C++11 起明确为纯右值),本质是临时生成的指针常量,类似字面量 nullptr,不是变量。

阅读全文
标签:C

本文共计947个文字,预计阅读时间需要4分钟。

C语言中,this指针在类成员函数中具体指向什么?

指向调用该函数的对象的首个地址,不是类定义的位置,也不是栈上随意一个地址——即是 `obj.func()` 中的 `obj` 在内存中的起始位置。

注意:哪怕函数是 constnoexcept 修饰的,this 类型也会跟着变:const MyClass*MyClass* noexcept 的 this 类型会不同,但值仍是对象地址。

  • this 是隐式参数,不占函数签名,所以重载不能靠 this 的 const 性区分(得靠成员函数自身的 const 限定符)
  • 静态成员函数没有 this,写 this->xxx 直接编译报错:error: 'this' is unavailable for static member functions
  • 在构造函数体中,this 已有效,但此时对象尚未完全构造完毕;访问虚函数或未初始化成员可能引发未定义行为

为什么 this 不能被取地址或赋值?

因为 this 是右值(C++11 起明确为纯右值),本质是临时生成的指针常量,类似字面量 nullptr,不是变量。

阅读全文
标签:C