对于已经定义过类型的变量能重复定义类型吗

来源:互联网  时间:2016/8/27 5:23:06

关于网友提出的“ 对于已经定义过类型的变量能重复定义类型吗”问题疑问,本网通过在网上对“ 对于已经定义过类型的变量能重复定义类型吗”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 对于已经定义过类型的变量能重复定义类型吗
描述:

第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;
}

解决方案2:

原因如下:


void rect::set(double a, double b)
{
//局部变量x、y会隐藏掉类变量x、y,所以原本想对类变量赋值,却没有达成效果
double x = a;
double y = b;
}

上一篇TransparentBlt 背景能隐藏 图片内容不能显示TransparentBlt 背景能隐藏 图片内容不能显示
下一篇QT什么控件可以实现操作系统文件管理的UI
明星图片
相关文章
《 对于已经定义过类型的变量能重复定义类型吗》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)