<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Trick on I'm OWenT</title><link>//owent.net/tags/trick.html</link><description>Recent content in Trick on I'm OWenT</description><generator>Hugo</generator><language>zh-cn</language><copyright>&lt;a rel="license" href="https://github.com/owent/blog-hugo/blob/master/LICENSE.md"&gt;&lt;img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /&gt;&lt;/a&gt;</copyright><lastBuildDate>Mon, 26 Aug 2013 14:16:37 +0000</lastBuildDate><atom:link href="//owent.net/tags/trick/index.xml" rel="self" type="application/rss+xml"/><item><title>一个C++关于成员变量偏移地址的小Trick</title><link>//owent.net/2013/879.html</link><pubDate>Mon, 26 Aug 2013 14:16:37 +0000</pubDate><guid>//owent.net/2013/879.html</guid><description>&lt;p&gt;今天看到一个小例子，发现了一个小trick。见代码：&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-cpp"&gt;#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;

class base_1
{
public:
 int a;
};

class base_2
{
public:
 int b;
};

class base_3: public base_1, public base_2
{
public:
 int c;
};

int main(int argc, char* argv[]) {

 printf("&amp;base_1::a = %p\n", &amp;base_1::a);
 printf("&amp;base_2::b = %p\n", &amp;base_2::b);
 printf("&amp;base_3::a = %p\n", &amp;base_3::a);
 printf("&amp;base_3::b = %p\n", &amp;base_3::b);
 printf("&amp;base_3::c = %p\n", &amp;base_3::c);


 base_3 t;
 t.a = 1;
 t.b = 2;
 t.c = 3;

 typedef int (base_3::*tip);
 tip pm = NULL;

 printf("base_3::a = %d\n", t.base_3::a);
 printf("base_3::b = %d\n", t.base_3::b);
 printf("base_3::c = %d\n", t.base_3::c);

 pm = &amp;base_3::a;
 printf("base_3::a(%p) = %d(ptr)\n", pm, t.*pm);
 pm = &amp;base_3::b;
 printf("base_3::b(%p) = %d(ptr)\n", pm, t.*pm);
 pm = &amp;base_3::c;
 printf("base_3::c(%p) = %d(ptr)\n", pm, t.*pm);

 return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;猜猜看这个代码输出什么？
答案是：&lt;/p&gt;</description></item></channel></rss>