导航

<2004年6月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

随笔分类

随笔档案

文章档案

相册

class A
{
    int k;
    void f(){     cout << this << &k;    }
};
main()
{
    A a;    a.f();
}
输出结果:this 和 k 的地址是一样的
结论:this 其实就是对象数据区的首地址

posted on 2004-06-18 16:04 杨老师的茅屋 阅读(1582) 评论(7)  编辑 收藏
评论
  • # 杨老师,你错了
    billdavid
    Posted @ 2004-06-19 09:37
    杨老师,你错了,你的结论太轻率了,到坛子里去开个30分的帖子,我告诉你怎么错了,呵呵
  • # re: 什么是 this
    七猫
    Posted @ 2004-06-21 03:26
    至少我用的编译器都是这么实现的,以保持与C的兼容性。
    struct A
    {
    int k;
    }
  • # re: 什么是 this
    BaiY
    Posted @ 2004-07-03 13:48
    在比较复杂的,有虚函数、虚基类的类层次结构中,某个结点的"this"远比这复杂了。

    最简单的例子:写一个带虚函数的钻石型继承,然后debug看一下每隔类的存储结构,看一下vtbl, vbasetbl, typeinfo都是怎么实现的。
  • # 这个就不一样啊
    Cheng
    Posted @ 2004-08-10 22:22

    class A
    {
    int k;
    void f(){ cout << this << &k; }
    virtual v() {}
    };
    main()
    {
    A a; a.f();
    }
  • # re: 什么是 this
    bighero3
    Posted @ 2004-08-19 03:13
    error C2248: 'f' : cannot access private member declared in class 'A'
    E:\gey\vc\this.cpp(6) : see declaration of 'f'
  • # re: 什么是 this
    莫问春秋
    Posted @ 2006-02-24 18:36
    我也感觉这个结论的切草率,最基本的也要考虑vptr的存在
  • # re: 什么是 this
    OOSKY
    Posted @ 2006-04-14 10:21
    最基本的也要考虑vptr的存在!
    还有继承等。。。。
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]

统计