查看运行结果
发布日期:2021-05-06 23:05:20 浏览次数:28 分类:精选文章

本文共 669 字,大约阅读时间需要 2 分钟。

看下列代码的运行结果

#include "pch.h"#include
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
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;}

 

不信你试试

上一篇:c++ 技能树
下一篇:nginx图谱

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月07日 13时09分07秒