今天我也冒充一下标题党。呵呵。

用g++编译代码时,struct中也有this指针。

我的g++版本:g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

以下代码只可用g++编译,不可以用gcc编译。

#include<stdio.h>

struct point{
        int x;
        int y;
        point(int _x = 0, int _y = 0) : x(_x), y(_y){
                printf("(this, x, y) = (%p, %d, %d)\n", this, x, y); 
        }
};

int main(){
        struct point po1(5,6);
        printf("(&po1, x, y) = (%p, %d, %d)\n", &po1, po1.x, po1.y); 
}

测试结果:

(this, x, y) = (0x7fff179d2a60, 5, 6)

(&po1, x, y) = (0x7fff179d2a60, 5, 6)