用户操作
[即时聊天] [发私信] [加为好友]
晨星ID:steedhorse
10195次访问,排名10869(2)好友62人,关注者169
熟练掌握C++程序设计语言,酷爱读书。
steedhorse的文章
原创 7 篇
翻译 1 篇
转载 0 篇
评论 34 篇
最近评论
steedhorse:谢谢补充。:)
steedhorse:见仁见智吧,有些东西您补充得很好。谢谢。
这篇本来就是写给初学者看看的,因为论坛里问这个问题的初学者很多。
初学者嘛,就是开始啥也不太清楚的那种;而C++毕竟太杂,不可能有初学者直接去买本C++的书,而且还能目的性非常明确地去掌握面向过程的程序设计,我觉得这也是事实。
lann64:这个vs2008上试过,也一样通过。
甚至没有那句#pragma warning(disable:4213)

也没看到警告信息。

在g++不行。
error: ISO C++ forbids cast to non-reference type used as lvalue|
error: non-lvalue in ……
lann64:今天来看看老大的博客,顺带留个脚印。
这篇写得好,应该对新人有很大帮助。只是对总结的第3条不大认同。
Scott Meyers说视c++为一个语言联邦,实际上已经可以看做几种次语言的联合,面向过程仅仅是其中一种次语言而已。由于C++里解决同一问题的方法有多种,很可能学习者不会化很多精力在面向过程上,但这个不能简单类比深入学习过c语言的程序员。要是在学习c++时,也深入研究……
steedhorse:CSDN除了专栏还有“迷你博客”。
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 一个不怎么正确的程序加深一点你对this指针的理解收藏

     | 旧一篇: 打印自然数1到10

    下面这个程序不见得在每种编译器上都能通过编译,既使通过了编译,也不见得可以成功运行并输出结果。

    让人欣慰,更让人郁闷的是:它在我的Visual Studio 2005 SP1中,既能顺利编译,也能正常运行。

    它虽然投机取巧,胡作非为,蝇营狗苟,横行霸道,辜负了党和人民的期望。但它至少能引发你的思考,加深一点你对this指针的理解,如果你还不是十分理解的话。

     

    #include <iostream>

    using namespace std;

     

    #pragma warning(disable:4213)

     

    class A {

    public:

           int i;

           A() : i(0) {}

           void f(A&);

    };

     

    void A::f(A& o){

           reinterpret_cast<A*>(this) = &o;

           i = 100;

    }

     

    int main() {

           A a, b;

           a.f(b);

           cout << "a.i = " << a.i << endl;

           cout << "b.i = " << b.i << endl;

    }

    发表于 @ 2008年07月16日 16:55:00|评论(loading...)|编辑|收藏

     | 旧一篇: 打印自然数1到10

    评论

    #xgywd 发表于2008-07-28 04:07:01  IP: 122.67.129.*
    的确在2005SP1中可以。
    还能运行。。

    晕。this这东西竟然是所有对象公有的

    它指向谁就改谁。
    #lann64 发表于2008-10-10 04:41:42  IP: 58.41.161.*
    这个vs2008上试过,也一样通过。
    甚至没有那句#pragma warning(disable:4213)

    也没看到警告信息。

    在g++不行。
    error: ISO C++ forbids cast to non-reference type used as lvalue|
    error: non-lvalue in assignment|

    #steedhorse 发表于2008-10-10 10:14:08  IP: 210.22.136.*
    谢谢补充。:)
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © steedhorse