求学快递网是国内领先的B2M2C教育培训网上信息平台!

首页 | 分站加盟 | 课程发布 | 最新课程 | 最新机构 | 培训专题 | 全国分站 | 帮助中心

计算机等级考试_计算机等级考试报名_计算机考试成绩查询_求学快递网

计算机等级考试一步到位
您的位置:求学快递网 > 计算机等级考试 > 考试辅导 > 计算机二级 > 计算机C++知识点:友元 - 正文内容

计算机C++知识点:友元

 

求学快递网计算机等级考试专题重点推荐:2016年计算机级考试报考时间 2016年计算机二级考试证书领取时间2016年计算机二级考试报考指南2016年计算机二级考试大纲2016年计算机二级考试政策2016年计算机二级考试报考条件2016年计算机二级考试科目等最新新闻资讯。

 

 4.显式友元预引用
  也可以不使用预引用,这只要在声明友元的时候加上关键自class就行了。
  #include iostream.h
  class CustomDate
  {
  int da,yr;
  public:
  CustomDate(int d=0,int y=0) { da=d; yr=y; }
  void display() const {cout< friend class Date; //这儿,去掉前面的预引用
  };
  class Date
  {
  ... ...
  };
  Date::operator CustomDate()
  {
  ... ...
  }
  
  int main()
  {
  ... ...
  }

 

5.友元函数
  通常,除非真的需要,否则并不需要把整个类都设为另一个类的友元,只需挑出需要访问当前类私有数据成员的成员函数,将它们设置为该类的友元即可。这样的函数称为友元函数。
  下面的程序限制了CustomDate类数据成员的访问,Date类中只有需要这些数据的成员函数才有权读写它们。
  #include iostream.h
  class CustomDate;
  class Date
  {
  int mo,da,yr;
  public:
  Date(const CustomDate&);
  void display() const {cout< };
  class CustomDate
  {
  int da,yr;
  public:
  CustomDate(int d=0,int y=0) { da=d; yr=y; }
  friend Date::Date(const CustomDate&);
  };
  Date::Date(const CustomDate& cd)
  {
  static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  yr=cd.yr;
  da=cd.da;
  for(mo=0;mo<11;mo++)
  if(da>dys[mo]) da-=dys[mo];
  else break;
  mo++;
  }
  int main()
  {
  Date dt(CustomDate(123, 89));
  dt.display(); 
  return 0;
  }
  6.匿名对象
  上面main()函数中Date对象调用CustomDate类的构造函数创建了一个匿名CustomDate对象,然后用该对象创建了一个Date对象。这种用法在C++中是经常出现的。
  7.非类成员的友元函数
  有时候友元函数未必是某个类的成员。这样的函数拥有类对象私有数据成员的读写权,但它并不是任何类的成员函数。这个特性在重载运算符时特别有用。
  非类成员的友元函数通常被用来做为类之间的纽带。一个函数如果被两个类同时声明为友元,它就可以访问这两个类的私有成员。下面的程序说明了一个可以访问两个类私有数据成员的友元函数是如何将在两个类之间架起桥梁的。
  #include iostream.h
  class Time;
  class Date
  {
  int mo,da,yr;
  public:
  Date(int m,int d,int y) { mo=m; da=d; yr=y;}
  friend void display(const Date&, const Time&);
  }; 
  class Time
  {
  int hr,min,sec;
  public:
  Time(int h,int m,int s) { hr=h; min=m; sec=s;}
  friend void display(const Date&, const Time&);
  };
  void display(const Date& dt, const Time& tm)
  {
  cout << dt.mo << "/" << dt.da << "/" << dt.yr;
  cout << " ";
  cout << tm.hr << ":" << tm.min << ":" << tm.sec;
  }
  int main()
  {
  Date dt(2,16,97);
  Time tm(10,55,0);
  display(dt, tm);
  return 0;
  }

 

 

 

关注求学快递网计算机等级考试专题,帮你了解最新的2016年计算机二级考试资讯服务2016计算机二级考试成绩查询,让你轻松备考计算机等级考试!

求学快递网计算机等级考试专题的小编们根据网民搜索喜爱,第一时间公布2016年计算机二级模拟试题2016年计算机二级考试应试技巧计算机二级考试历年真题2016年计算机二级考试章节复习供广大求学爱好者学习使用,欢迎继续关注求学快递网计算机等级考试专题,并给我们提供宝贵的意见!

 

相关推荐

计算机等级考试最新机试技巧
计算机等级考试高效利用技巧

最新计算机资讯

热点专题

计算机等级考试经验技巧分享

关于本站  诚征英才  广告服务  招生服务  免责声明  分站加盟  VIP会员  联系我们  网站地图  网站记事

版权所有 CopyRight 2008-2017 粤ICP备14009694号 www.studyems.com, Inc. All Rights Reserved
违法和不良信息举报邮箱:2881796407@qq.com 举报电话: