c++程序问题——加注释的地方
#include<iostream>#include<cmath>usingnamespacestd;classwin{private:intx;public:win()...
#include<iostream>
#include<cmath>
using namespace std;
class win
{
private:
int x;
public:
win(){};
win(int a)
{
x=a;
cout<<"x="<<x<<endl;
}
win iny(){return win(10);}
void show()
{
cout<<"x="<<x<<endl;//为什么此处的x的值不是10???
}
};
void main()
{
win a;
a.iny();
a.show();
}
在x=a语句后输出x的值为10,可是在函数show中输出的不是10 展开
#include<cmath>
using namespace std;
class win
{
private:
int x;
public:
win(){};
win(int a)
{
x=a;
cout<<"x="<<x<<endl;
}
win iny(){return win(10);}
void show()
{
cout<<"x="<<x<<endl;//为什么此处的x的值不是10???
}
};
void main()
{
win a;
a.iny();
a.show();
}
在x=a语句后输出x的值为10,可是在函数show中输出的不是10 展开
4个回答
展开全部
天堂之吻 团队为您解答
首先,a.show() 输出的是a里面的私有变量x
你的本意可能是想用 a.iny()函数为a里面的x赋值
可是你的函数返回的是一个新的 匿名 win对象,他和a一点关系都没有。而那个匿名的对象
在函数调用结束之后已经完全被系统释放了.a的值根本没有改变。所以输出的结果自然不是10
知道了原因,我相信你知道怎么改代码了,加油
首先,a.show() 输出的是a里面的私有变量x
你的本意可能是想用 a.iny()函数为a里面的x赋值
可是你的函数返回的是一个新的 匿名 win对象,他和a一点关系都没有。而那个匿名的对象
在函数调用结束之后已经完全被系统释放了.a的值根本没有改变。所以输出的结果自然不是10
知道了原因,我相信你知道怎么改代码了,加油
追问
我的目地是想了解在类的成员函数中调用构造函数是怎么回事,我不明白不能够显式的调用构造函数是怎么回事?return win(10);语句算显式的调用构造函数吗?还有,我只定义了一个对象,那个X应该是属于对象a的啊;并且将x定义成静态变量的话,输出的x的值就是我想要的10.
追答
天堂之吻 继续为您解答,呵呵
1:如果是静态成员,你要明白,那是类的所有对象共享的,自然是10了,而普通的成员变量是每一个类对象自己的,不是共享的。
2:构造函数的作用是制造一个类对象出来。可是你如果只调用构造函数,而没有给他取一个名字,那么你自然无法用它。
3:return win(10)确实是现实调用,可是你能告诉我,你新产生的这个类对象名字是什么呢?
win a(10);如果你是这么写的话,你是在告诉编译器,你用win这个类产生了一个名字叫a的对象,产生的同事并且用 win(int a) 这个构造函数去初始化它。
PS:其实条用构造函数,就是用构造函数产生一个对象。一个新的对象。
希望可以帮到你
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
类中得变量初始化是放在构造函数中执行的 win a 生成a对象调用的是无参数的构造函数 所以x变量没有被初始化 函数iny ()中得x只能作为局部变量来使用 作用域结束后 被释放
若想实现 则可以
void main()
{
win a(10);构造函数将x初始化为10
a.show(); 打印为10
}
若想实现 则可以
void main()
{
win a(10);构造函数将x初始化为10
a.show(); 打印为10
}
追问
我的目地是想了解在类的成员函数中调用构造函数是怎么回事,我不明白不能够显式的调用构造函数是怎么回事?return win(10);语句算显式的调用构造函数吗?还有,我只定义了一个对象,那个X应该是属于对象a的啊;并且将x定义成静态变量的话,输出的x的值就是我想要的10.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为x是私有类型的,你调用win a时已经初始化为0。调用a.iny()并没有对a.x进行改变。所以输出还是0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询