c++ this

  1. 用处:
    1. 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。
    2. this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。它指向正在被该成员函数操作的那个对象。
    3. this 指针被隐含地声明为: ClassName const this,这意味着不能给 this指针赋值;在ClassName类的const 成员函数中,this 指针的类型为:const ClassName const,这说明不能对 this 指针所指向的这种对象是不可修改的(即不能对这种对象的数据成员进行赋值操作)
  2. 用法:
    1. 在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this。
    2. 当参数与成员变量名相同时,如this->n = n (不能写成n = n)。

Q:delete this 合法吗?

A:合法,但:

  1. 必须保证 this 对象是通过 new(不是 new[]、不是 placement new、不是栈上、不是全局、不是其他对象成员)分配的
  2. 必须保证调用 delete this 的成员函数是最后一个调用 this 的成员函数
  3. 必须保证成员函数的 delete this 后面没有调用 this 了
  4. 必须保证 delete this 后没有人使用了
相关推荐
杜子不疼.2 分钟前
【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛
linux·服务器·前端
belldeep4 分钟前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
CSCN新手听安6 分钟前
【linux】网络基础(三)TCP服务端网络版本计算器的优化,Json的使用,服务器守护进程化daemon,重谈OSI七层模型
linux·服务器·网络·c++·tcp/ip·json
m0_736919106 分钟前
C++中的委托构造函数
开发语言·c++·算法
小小小小王王王11 分钟前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
凉辰24 分钟前
使用uni.createInnerAudioContext()播放指定音频(踩坑分享功能)
开发语言·javascript·音视频
echoVic39 分钟前
多模型支持的架构设计:如何集成 10+ AI 模型
java·javascript
程序员Agions43 分钟前
useMemo、useCallback、React.memo,可能真的要删了
前端·react.js
echoVic43 分钟前
AI Agent 安全权限设计:blade-code 的 5 种权限模式与三级控制
java·javascript
David凉宸44 分钟前
Vue 3 + TS + Vite + Pinia vs Vue 2 + JS + Webpack + Vuex:对比分析
javascript·vue.js·webpack