免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: gaozhongshan
打印 上一主题 下一主题

[C++] c++中this指针到底指向什么 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-07-28 01:34 |只看该作者
原帖由 yarco3 于 2007-7-27 22:53 发表
瞧你那身上的味道, 跟以前a字母开头的BZ一摸一样. 离那个去掉你末尾数字的某人还差了一截.
技术我不感保证, 闻起来就是比他臭


你还是挨封吧

论坛徽章:
0
32 [报告]
发表于 2007-07-28 13:19 |只看该作者
对象封装数据和对数据的操作,但是编译器在生成对象时,显然不会为每个对象都创建一个成员函数的副本,这样会相当浪费空间,于是,编译器就把对象的非静态成员变量放到了一起,形成一个连续的存储区域,但是成员函数如何才能找到对象的数据呢,就是this指针来做到的。
class A{
int some;
void somefun();
static void somestatic();
}
int main(){
A a;
a.somefun();
A::somestatic();
}
1)对于非静态成员函数 somefunc(),编译器会为其添加一个用户不可见的参数,这就是this,实际上somefunc()=somefunc(A* this),在a.somefunc()调用中,实际上的调用方式是 somefunc(&a)。在somefunc()内部,对对象属性的引用一律采用this->some的方式直接指向对象属性。
2)对于静态成员函数,因为它属于类,所以编译器并不自动为其添加this指针,因此在静态成员函数内部根本就没有对象的指针,所以静态成员内部无法访问对象成员变量(类的非静态成员变量)

论坛徽章:
0
33 [报告]
发表于 2007-07-28 17:58 |只看该作者

回复 #31 ggf0101 的帖子

成员函数一定是属于类的,不会专属于某个对象

一般成员变量属于对象,静态声明的除外
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP