有大神帮忙解释下结果吗?

s373020580 2018-03-26 02:14:50
#include<iostream>
using namespace std;

class B
{
public:
B(){cout<<"B()"<<endl;}
int i;
int j;
};

class A
{
public:
A(){cout<<"A()"<<endl;}
void fun();
private:
B* m_a;
};


void A::fun()
{
cout << m_a <<endl;
++m_a->i;
++m_a->j;
cout << m_a->i <<endl;
cout << m_a->j <<endl;
}

int main(void)
{
A a;
a.fun();
}

test$g++ test.cpp
test$a.out
A()
0x7ffe800575e0
2
1
...全文
536 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2018-03-26
  • 打赏
  • 举报
回复
这种行为是未定义的,所以初始化不初始化编译器可以自由处理,越界也是未定义的,程序运行结果没有参考价值
s373020580 2018-03-26
  • 打赏
  • 举报
回复
我在Ubuntu 下gcc编译的,只不明白为什么m_a->i和m_a->j的结果会被初始化
百合杰 2018-03-26
  • 打赏
  • 举报
回复
我跑出来跟你不一样

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧