鱼C论坛

 找回密码
 立即注册
查看: 4093|回复: 5

C++菜鸟求教

[复制链接]
发表于 2012-11-18 22:31:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # include <iostream>
  2. using namespace std;

  3. class Point
  4. {
  5. public:
  6.         int x ;
  7.         int y ;
  8.         Point ()
  9.         {
  10.                 x = 0;
  11.                 y = 0;
  12.         }
  13.                 Point (int a, int b)
  14.         {
  15.                 x = a;
  16.                 y = b;
  17.         }
  18.         ~Point()
  19.         {
  20.         }
  21.         void Output()
  22.         {
  23.                 cout << x <<endl << y << endl;
  24.         }
  25.         void Output(int x, int x)
  26.         {
  27.                 x = x;
  28.                 y = x;
  29.         }


  30. };
  31. int main (void)
  32. {
  33.         Point P(3, 3);
  34.         P.Output(5, 5);
  35.         P.Output();

  36.         return 0;
  37. }
复制代码
大虾们,给俺看看这个是为什么?以上是第一个代码输出的结果是3,3
我修改了
  1. void Output(int x, int x)
  2. {
  3. x = x;
  4. y = x;
  5. }
复制代码
以后的代码
  1. # include <iostream>
  2. using namespace std;

  3. class Point
  4. {
  5. public:
  6. int x ;
  7. int y ;
  8. Point ()
  9. {
  10. x = 0;
  11. y = 0;
  12. }
  13. Point (int a, int b)
  14. {
  15. x = a;
  16. y = b;
  17. }
  18. ~Point()
  19. {
  20. }
  21. void Output()
  22. {
  23. cout << x <<endl << y << endl;
  24. }
  25. void Output(int a, int b)
  26. {
  27. x =a;
  28. y = b;
  29. }


  30. };
  31. int main (void)
  32. {
  33. Point P(3, 3);
  34. P.Output(5, 5);
  35. P.Output();

  36. return 0;
  37. }
复制代码
输出结果变成了5,5我只是改动了
void Output(int a, int b)
{
x =a;
y = b;
}中形参的名称而已!请问为什么会有如此大的不同!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-18 23:27:22 | 显示全部楼层
你修改得没错,原先的代码有问题,
26.        void Output(int x, int x)

27.        {

28.                x = x;

29.                y = x;

30.        }
两个形参都叫x,不能区分,并且x还和数据成员x,y同名
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-19 00:11:42 | 显示全部楼层
首先你定义的问题是。a,b。。void Output()
{
cout << x <<endl << y << endl;
}
void Output(int a, int b)
{
x =a;
y = b;
}


};
int main (void)
然后你输出的也是void 所以就变成这样了啊。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-19 00:13:35 | 显示全部楼层
中间的部分。系统部运行。在所了。我都搞不懂你在写什么。
int main (void)
{
Point P(3, 3);
P.Output(5, 5);
P.Output();
这是什么意思啊。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-19 14:51:39 | 显示全部楼层
楼上两位好像已经解决了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-11-19 21:53:52 | 显示全部楼层
OutPut()函数改为这样:
        void Output( int x, int y)
        {
                Point::x=x;
                Point::y = y;
        }
//已编译通过,原因就是作用域不一样,默认在代码块内x和y为形参,如果要使用类成员的x和y需要显示的指明他的作用域.
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 10:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表