A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 远人 中级黑马   /  2014-4-24 11:58  /  1069 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下,计算两点之间距离的类方法,
  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创建的成员变量,测试时没有任何错误。
想问:为什么这里的类方法能用成员变量?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
不能访问成员变量的意思是:不能访问类方法的自身的成员变量,即不能访问自身的成员变量x或自身的成员变量y等;而p1和p2是作为参数传进来,可以访问参数的成员变量。
回复 使用道具 举报
+ (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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马