社区
C++ 语言
帖子详情
关于this的指向问题
cobra_chen
2010-08-12 07:01:48
void CFOME::Clear()
{
memset(this,0,sizeof(ADD_NET);
}
ADD_NET是个结构体
那么这个Clear()是为了清空ADD_NET的数据?
那这个this指向什么?
这样用this有点晕,这个有什么好处么?
还有看到有用this做参数传递的。那这个传的就是那个类?
有点晕了。
...全文
306
34
打赏
收藏
关于this的指向问题
void CFOME::Clear() { memset(this,0,sizeof(ADD_NET); } ADD_NET是个结构体 那么这个Clear()是为了清空ADD_NET的数据? 那这个this指向什么? 这样用this有点晕,这个有什么好处么? 还有看到有用this做参数传递的。那这个传的就是那个类? 有点晕了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
34 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taodm
2010-08-18
打赏
举报
回复
呃,C程序员直接用C++写的C代码真是惨了点。
cnpws
2010-08-18
打赏
举报
回复
this就是当前对象的指针,用多了就能理解了。
jerry4805971
2010-08-18
打赏
举报
回复
真服了,对this进行memset,想搞什么啊
jlyong2122
2010-08-17
打赏
举报
回复
学习 。。。。。。。。。
yngaocn
2010-08-17
打赏
举报
回复
每个成员函数都有一个隐含的形参:this,表示该类的指针,是一个const指针,
如果成员函数是非const,则this是指向非const的const指针
如果成员函数是const,则this是指向const的const指针,即:该指针不能改变,且该指针指向的对象也不能改变。
memset(this,0,sizeof(ADD_NET);是将this地址开始,大小为sizeof(ADD_NET)的内存空间清空为0
xl1016807272
2010-08-16
打赏
举报
回复
冒个泡
arong1234
2010-08-16
打赏
举报
回复
写这种代码的人是垃圾,除了降低可读性和增加错误可能性之外,没有什么特别的好处
yangxingya212
2010-08-16
打赏
举报
回复
类的成员函数的参数中都会隐藏一个this指针(除了静态的成员函数)作为参数,它其实就是一个指向该类本身的指针
RLib
2010-08-14
打赏
举报
回复
this指针是非静态成员函数的隐含形参,是对象本身的引用。
既然是形参,就可以向其他指针一样用,这只是一个局部变量(不会是按引用传值吧)。然而指向的目标是不会改变。
有错别找我
y7501272
2010-08-14
打赏
举报
回复
this 指针所指向的地址就是本对象数据成员在内存中的起始地址(前提是没有虚函数哈)
至于这个this指针 有点神奇的 我也解释不太通
一般书上都说的this指针指向的是本对象(话是没错 看个人理解)
class CShape
{
int m_color;
public:
void setcolor(int color){m_color=color;}
};
经过编译器编译之后 其实是:
class CShape
{
int m_color;
public:
void setcolor(int color,(CShape *)this){this->m_color=color;}
};
摘自候俊杰 《深入浅出MFC》53页
楼主自己理解一下this指针的含义
lovestefanie
2010-08-13
打赏
举报
回复
是不能修改还是修改了会出问题?
管哥的天下
2010-08-13
打赏
举报
回复
this是个const指针,怎能修改?
this 指的类对象本
jackyjkchen
2010-08-13
打赏
举报
回复
[Quote=引用 14 楼 cobra_chen 的回复:]
什么样的隐患呢?
引用 5 楼 demon__hunter 的回复:
this指针始终指向当前对象的首地址。
memset(this,0,sizeof(ADD_NET);不要这样初始化,如果ADD_NET里有虚函数,那么程序有很大的隐患了。
[/Quote]
虚函数表被覆盖了
cobra_chen
2010-08-13
打赏
举报
回复
什么样的隐患呢?
[Quote=引用 5 楼 demon__hunter 的回复:]
this指针始终指向当前对象的首地址。
memset(this,0,sizeof(ADD_NET);不要这样初始化,如果ADD_NET里有虚函数,那么程序有很大的隐患了。
[/Quote]
zou_cplus
2010-08-13
打赏
举报
回复
memset(this,0,sizeof(ADD_NET);
this的值是不能被改变的 但是 memset 改变this的值吗?
这句话的意思 是 this指向首地址的sizeof(ADD_NET) 内的内存全部清0
要是有虚函数的话 VC编译器的类地址的前面4个字节是 代表虚函数地址 还有多重继承的时候 虚继承的时候 类的数据成员的 内存模型是不一样的 除非你很清除他的内存结构 要不最好不要这么写
GingerJWS
2010-08-13
打赏
举报
回复
[Quote=引用 5 楼 demon__hunter 的回复:]
this指针始终指向当前对象的首地址。
memset(this,0,sizeof(ADD_NET);不要这样初始化,如果ADD_NET里有虚函数,那么程序有很大的隐患了。
[/Quote]
up
Erorr
2010-08-13
打赏
举报
回复
特殊情况的特殊技巧吧
搞清楚后记得加上注释
const指针指向的对象还是可以设置的
蜥蜴枪王
2010-08-13
打赏
举报
回复
this指针是const、不能修改...
我也要好好琢磨琢磨...
hustwbno1
2010-08-13
打赏
举报
回复
this指针是指向该类的首地址。是不能修改的
xiaoRainie
2010-08-13
打赏
举报
回复
这样是改变了类内部成员的数据
memset(this,0,sizeof(ADD_NET);
改变的是this指针指向的内容,而不是this指针的指向,另外this指针的指向是没办法修改的
加载更多回复(12)
零基础学习微信小程序开发到精通
认识微信小程序、开发者工具、小程序开发、小程序常见组件、小程序常见样式、函数和事件、数据绑定、常用API、小程序生命周期、变量、运算符、语句、对象、数组、列表渲染、条件渲染、Math对象和Date对象、this的...
关于this
指向
问题
及改变this
指向
的方法
this
指向
详解 this的
指向
在函数定义的时候是确定不了的,只有函数执行的时候才确定this到底
指向
谁 一般情况下this
指向
调用它的对象 下面我们来看看this被调用时的五种情况 思维导图 分析 1.作为对象方法...
JavaScript中关于this
指向
问题
(学习笔记)
全局作用域或者普通函数中this
指向
全局对象window(注意定时器里面的this
指向
window) 方法调用中谁调用this
指向
谁 构造函数中this
指向
构造函数的实例 通过实例分析 <button>点击</button> <...
关于this
指向
问题
(箭头函数没有this
指向
)
1.全局环境下,
指向
windows console.log(this.document === document); // true 2.函数上下文调用 function f1(){ return this; } f1() === window; // true 3.对象中的this ...this
指向
只和调用函数...
javascript的this
指向
问题
关于this
指向
问题
一直是js基础的热门
问题
,最近参与公司面试问过很多面试者总觉得有点模糊。所以自己想着总结一下: this的
指向
在函数定义的时候是确定不了的,只有在函数执行的时候,
指向
调用它的对象。 一、全局...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章