关于网友提出的“ 对于已经定义过类型的变量能重复定义类型吗”问题疑问,本网通过在网上对“ 对于已经定义过类型的变量能重复定义类型吗”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 对于已经定义过类型的变量能重复定义类型吗描述:
第15行和第16行对x和y又一次定义类型,结果输出是错的,请问为什么不能重复定义类型啊?
#include
using namespace std;
class rect{
private:
double x, y;
public:
void set(double a, double b);
double peri();
double area();
};
void rect::set(double a, double b)
{
double x = a;
double y = b;
}
double rect::peri()
{
double peri = 2 * ( x + y );
return peri;
}
double rect::area()
{
double area = x * y;
return area;
}
int main()
{
rect chang1, chang2;
chang1.set(135, 86);
chang2.set(62.2, 27.5);
cout << "chang1' peri is :" << chang1.peri() << "\t" << "chang2' peri is :" << chang2.peri() << endl;
cout << "chang1' area is :" << chang1.area() << "\t" << "chang2' area is :" << chang2.area() << endl;
return 0;
}
解决方案1:
void rect::set(double a, double b)
{
double x = a; //这里不叫重新定义类, 而是定义了两个局部变量. 这种情况下想访问成员变量需要用this->x
double y = b;
this->x = x;
this->y = y;
}
原因如下:
void rect::set(double a, double b)
{
//局部变量x、y会隐藏掉类变量x、y,所以原本想对类变量赋值,却没有达成效果
double x = a;
double y = b;
}