关于参数初始化列表和引用的问题

caohhh 2010-11-25 07:49:15
#include <iostream>
using namespace std;
class A
{
private:
const int i,j;
int &k;
public:
A(int a,int b,int x):i(a),j(b),k(x)
{
cout<<"i="<<i<<"\t"<<"j="<<j<<"\t"<<"k="<<k<<endl;
}
void output()
{
cout<<k<<endl;
}
};
void main()
{
int m=6;
A x(4,5,m);
x.output();//调用k的应用,值为随机???
}

问题是x.output()输出的是4199863,应该是一个随机值。而构造函数中输出的k值没有问题。
请大虾们帮助。
...全文
314 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
_Fong 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

A(int a,int b,int x):i(a),j(b),k(x)
{
cout<<"i="<<i<<"\t"<<"j="<<j<<"\t"<<"k="<<k<<endl;
cout<<&x<<endl;
}

在运行这个函数的时候 k 是引用参数了x 变量的内存空间,而x当然是传来的6了,所以这时候的k也等于6 ,
当这个构造函数执行完毕后x的这块变量随着函数栈区一……
[/Quote]

正解....
瑞尼 2011-11-03
  • 打赏
  • 举报
回复
神马情况.........
cdj8887 2010-11-25
  • 打赏
  • 举报
回复
A(int a,int b,int x):i(a),j(b),k(x)
{
cout<<"i="<<i<<"\t"<<"j="<<j<<"\t"<<"k="<<k<<endl;
cout<<&x<<endl;
}

在运行这个函数的时候 k 是引用参数了x 变量的内存空间,而x当然是传来的6了,所以这时候的k也等于6 ,
当这个构造函数执行完毕后x的这块变量随着函数栈区一同释放了,所以值也就不的而知了....
再当你调用函数来输出k的时候,k依然引用着构造函数中参数的 x 那块变量空间,而不是你传的m,所以当然不会是6了
cdj8887 2010-11-25
  • 打赏
  • 举报
回复
刚想给你解答为什么两次的输出结果不一样,你结贴了...
漫步者、 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caohhh 的回复:]
引用 2 楼 ganpengjin1 的回复:
引用?
int &amp;k;?对谁的引用?

我只是刚学C++,看到书上说类成员中的引用成员必须采用初始化列表进行初始化,所以试试看。
结果偶然发现了这个问题。既然在构造函数中能直接输出k的值,那么我用成员函数输出k怎么就
成了随机值呢?
又或者我根本没有理解问题出在哪里呢?求解。。
[/Quote]我 也是在学++,我看得比较慢!
liutengfeigo 2010-11-25
  • 打赏
  • 举报
回复
你少个个符号啊。
caohhh 2010-11-25
  • 打赏
  • 举报
回复
4L.非常感谢,问题解决了。突然发现自己学的很浮躁,还要继续努力。
caohhh 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ganpengjin1 的回复:]
引用?
int &k;?对谁的引用?
[/Quote]
我只是刚学C++,看到书上说类成员中的引用成员必须采用初始化列表进行初始化,所以试试看。
结果偶然发现了这个问题。既然在构造函数中能直接输出k的值,那么我用成员函数输出k怎么就
成了随机值呢?
又或者我根本没有理解问题出在哪里呢?求解。。
gules 2010-11-25
  • 打赏
  • 举报
回复
A(int a,int b,int& x):i(a),j(b),k(x)
{
cout<<"i="<<i<<"\t"<<"j="<<j<<"\t"<<"k="<<k<<endl;
}
caohhh 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 csuxiaowu 的回复:]
唔系化 ? 你神马编译器哦
[/Quote]VC6和VS2010的结果都是随机值。
漫步者、 2010-11-25
  • 打赏
  • 举报
回复
引用?
int &k;?对谁的引用?
Csuxiaowu 2010-11-25
  • 打赏
  • 举报
回复
唔系化 ? 你神马编译器哦

64,647

社区成员

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

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