招生考试网
学历| 高考 美术高考 考研 自考 成考 专升本 中考 会考 外语| 四六级 职称英语 商务英语 公共英语 日语能力 翻译资格 JTEST
资格| 公务员 报关员 银行从业 司法 导游 教师资格 报关 财会| 会计证 经济师 会计职称 注册会计 税务师 资产评估 审计师
工程| 一建 二建 造价师 造价员 咨询师 监理师 安全师 医学| 卫生资格 执业医师 执业药师 执业护士 | 教案 论文 文档
IT类| 计算机等级 计算机软考 职称计算机 高校计算机 推荐-国家公务员 事业单位招聘 军校国防生 自主招生 艺术特长生 招飞
 3773考试网 - 计算机等级考试 - 经验交流 - 正文

掌握C++

来源:fjzsksw.com 2009-12-17 15:16:50

 void output()

  {

  cout<<"x="<<x<<"y="<<y<<endl;

  }

  };

  void main()

  {

  point pt(5,5); //调用构造函数,将x,y初始化为5

  pt.input(10,10); //调用input函数,将x,y赋值为10???

  pt.output();

  }程序运行之后,变量x,y的初始化工作是正常的,但是赋值失败,书中给出的解释是由于变量的可见性,x,y在input(int x,int y)这个函数中是不可见的。但是把input(int x,int y)形参换成非x,y就可以了,修改代码,测试下果然可以。

  这里便有一疑问,既然x,y在input(int x,int y)这个函数中是不可见的,那么即使换了一个形参,也应该是不可见的,个人感觉点地方应该这么来解释:

  void input(int x,int y)     {

  x=x;

  y=y;

  }

  没有将形参x,y的值赋给类的成员变量x,y并不是因为x,y的可见性,同一个类中的变量不存在不可见性的问题,而是input函数中的x,y 相当与两个局部变量,巧合的是和成员变量同名,作用域的优先级高于成员变量(在css样式表中会这样),于是此函数的功能为形参的自我赋值。

  回到this指针,每个对象在创建时都会有一个隐含的this指针指向对象本身。将函数修改为:

  void input(int x,int y)     {

  this.x=x;

  this.y=y;

  }

  由于this指针指向对象本身,当然可以通过this指针指向对象的独有的数据成员,并完成赋值工作。

  Ps:又是指针,shit!

  继承

  派生类成员对基类成员的访问能力

上一页  [1] [2] [3] [4] [5] 下一页



  • 上一个文章:
  • 网站版权与免责声明
    ①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
    ②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权及个人隐私等问题,请在两周内邮件fjksw@163.com联系.
    推荐文章
  • 此栏目下没有推荐文章


  • | 关于我们 | 联系我们 | 版权申明 | 网站导航 |
    琼ICP备12003406号