檢視執行結果
阿新 • • 發佈:2018-11-19
看下列程式碼的執行結果
#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; }
不信你試試