黑马程序员技术交流社区

标题: 类方法问题? [打印本页]

作者: 远人    时间: 2014-4-24 11:58
标题: 类方法问题?
如下,计算两点之间距离的类方法,
  1. // 计算两个点之间的距离
  2. + (double)distanceBetweenPoint1:(Point2D *)p1 andPoint2:(Point2D *)p2
  3. {
  4.     // 两点距离公式:( (x1-x2)的平方 + (y1-y2)的平方 )开根
  5.    
  6.     // x1-x2
  7.     double xDelta = p1.x - p2.x;
  8.     // (x1-x2)的平方
  9.     double xDeltaPingFang = pow(xDelta, 2);
  10.    
  11.     // y1-y2
  12.     double yDelta = p2.y - p2.y;
  13.     // (y1-y2)的平方
  14.     double yDeltaPingFang = pow(yDelta, 2);
  15.    
  16.     return sqrt(xDeltaPingFang + yDeltaPingFang);
  17. }
复制代码

老师讲课的时候有明显讲解:类方法中不能访问成员变量,这里的x  和  y  都是Point2D创建的成员变量,测试时没有任何错误。
想问:为什么这里的类方法能用成员变量?

作者: 周宇华    时间: 2014-4-24 13:56
不能访问成员变量的意思是:不能访问类方法的自身的成员变量,即不能访问自身的成员变量x或自身的成员变量y等;而p1和p2是作为参数传进来,可以访问参数的成员变量。
作者: 李烨    时间: 2014-4-24 22:52
+ (double)distanceBetweenPoint1:(Point2D *)p1 andPoint2:(Point2D *)p2
看这里,这里传入的都是Point2D *指针,而且调用x,y的时候p1.x,p1.y都是根据这个指针操作的,而不是直接调用,老师讲的是不能直接掉用,这里就像一个函数调用对象的成员变量一样
  1. void test(Person *p)
  2. {
  3.      p.age = 10; // 这样就可以操作成员变量
  4. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2