现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

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

2013-06-30 21:16 工业·编程 ⁄ 共 439字 ⁄ 字号 暂无评论

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

让人欣慰,更让人郁闷的是:它在我的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; 
}

给我留言

留言无头像?