一个调用对象成员函数的问题

tigertianx 2013-11-29 04:59:52

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

class A
{
public:
A():i(10){ };
void Func(void){ cout << "Func of class A" <<" "<<i <<endl; }
private:
int i;
};

A* Test(void)
{
A *p;
A a;
p = &a; // 注意 a 的生命期
return p;
}

void _tmain()
{
A *q;
q = Test();
//q = NULL;
q->Func();
system("pause");
}

上述代码在vs2010上执行下来怎么输出对象A的成员变量i的值为什么是一个很小的负数,并不是10,我查看了q指向的i确实已经是10了,为什么调用Func()函数后i的输出值变成了-858993460
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
版主大哥 2013-11-29
  • 打赏
  • 举报
回复
呵呵 p = &a; // 注意 a 的生命期 书上说,这么做,结果不可预知
  • 打赏
  • 举报
回复
p = &a; // 注意 a 的生命期 自己不是已经写清楚了么
漫步者、 2013-11-29
  • 打赏
  • 举报
回复
引用 1 楼 ganpengjin1 的回复:
回去了解一下:不要返回临时对象地址!
及其引用
漫步者、 2013-11-29
  • 打赏
  • 举报
回复
回去了解一下:不要返回临时对象地址!

65,212

社区成员

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

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