这道题答案为什么是0?

来源:百度知道 编辑:UC知道 时间:2024/06/17 04:53:21
#include <iostream.h>
class Local
{
int X;
public:
void ini(int X){X=this->X*this->X;}
void print(){cout<<X;}
}a;
void main()
{
a.ini(5);
a.print();
}

void ini(int X){X=this->X*this->X;}
这里的两个X你搞清楚了吗?其实X的值是未定义的,你根本没初始化!!

#include <iostream>
using namespace std;
class Local
{
int X;
public:
void ini(int x){this->X=x*x;}
void print(){cout<<X;}
}a;
int main()
{
a.ini(5);
a.print();
system("pause");
return 0;
}
你原来是这个意思吧

谁告诉你可以在类定义的大括号后面跟个变量名?闻所未闻!
改成这样试试:
#include <iostream.h>
class Local
{
int X;
public:
void ini(int X){X=this->X*this->X;}
void print(){cout<<X;}
};
void main()
{
Local a;
a.ini(5);
a.print();
}

你是把5赋值给了ini(int x)中的参数x,而不是对象a中的x。
改成void ini(int i){
this->x=x*x;
}
就成出现你要的结果25了

你把5赋给ini的参数x后,a的x还是0,而且你还把0*0赋给参数x,a的x还是0.
应该是this->x = x*x;

变量的作用范围

类的值没有赋进去