1. 程式人生 > >檢視執行結果

檢視執行結果

看下列程式碼的執行結果

#include "pch.h"
#include<iostream>
using namespace std;

class A
{
public:
	A()
	{
		a = 1;
		b = 2;
	}
private:
	int a;
	int b;
};
class B
{
public:
	B()
	{
		c = 3;
	}
	void print()
	{
		cout << c;
	}
private:
	int c;
};
int main(int argc, char* argv[])
{
	A a;
	B* pb = (B*)(&a);
	pb->print();
	return 0;
}

 

執行結果:

1

 解釋:

 

把a轉成了一個長度為2的陣列
那個B*指標是可以++的

只讀到了第一個元素

B* pb = (B*)(&a);
這裡,pb是一個數組的首地址

  

 

 

改成這樣,輸出結果就是2了

#include "pch.h"
#include<iostream>
using namespace std;

class A
{
public:
	A()
	{
		a = 1;
		b = 2;
	}
private:
	int a;
	int b;
};
class B
{
public:
	B()
	{
		c = 3;
	}
	void print()
	{
		cout << c;
	}
private:
	int c;
};
int main(int argc, char* argv[])
{
	A a;
	B* pb = (B*)(&a);
	(pb+1)->print();
	return 0;
}

 

不信你試試