当前位置: 首页 > news >正文

网站设计策划方案无锡seo优化

网站设计策划方案,无锡seo优化,网站开发实现的功能,长沙装修公司招聘网本文主要介绍面向对象编程的友元的使用#xff0c;以及友元的特性和分类#xff0c;提供C代码。 1 为什么引进友元 面向对象编程#xff08;OOP#xff09;的三大特性中的封装#xff0c;是通过类实现对数据的隐藏和封装。一般定义类的成员变量为私有成员#xff0c;成员… 本文主要介绍面向对象编程的友元的使用以及友元的特性和分类提供C代码。 1 为什么引进友元 面向对象编程OOP的三大特性中的封装是通过类实现对数据的隐藏和封装。一般定义类的成员变量为私有成员成员函数为公有函数通过公有函数作为类的接口实现与外部交互。一些情况下类外的某些函数需要频繁访问类的成员变量因此引入了友元的概念将类外的函数定义为该类的友元函数从而实现对该类私有成员的访问。由此还引入友元类就是一个类是另一个类的友元类友元类可以访问另一个类的所有成员。友元函数和友元类称为友元。 友元的作用是提高了程序的运行效率减少了类型检查和安全检查的耗时但是友元破坏了类的封装和隐藏性让非类成员函数可以类的私有成员。  友元是C语言中的一种关系友元关系发生在函数与类之间或者类与类之间。友元关系是单向的不能传递。 与类有友元关系的函数称为友元函数与类有友元关系的类称为友元类。 2 友元的性质 1在被访问类中以friend关键字修饰友元类或者友元函数 2友元不属于该类且不受该类的访问限制可以直接访问具体类的所有成员 3友元关系不能被继承 4友元关系是单向的不具有交换性只能是一个函数访问一个类的所有成员或者一个类允许访问另一个类的所有成员反之不行 5友元关系不具有传递性 3 友元的本质 友元的本质是提供不属于该类成员包括全局函数、其他类的成员函数、其他类访问本类所有成员和成员属性的属性。 4 友元分类 4.1 全局函数为友元函数 全局函数拥有访问一个类所有成员的能力需要在被访问类中用关键字friend声明f被访问类的友元函数。一个类可以拥有多个友元函数。一个函数也可以是多个类的友元函数。 代码如下 #include iostream #include string using namespace std;class A {private:string name_;int age_;public:A(const string name,const int age) : name_(name), age_(age) {cout A构造函数 初始化参数 endl;};virtual ~A(){cout A析构函数 endl;}void func(){std::cout As func() std::endl;}friend void get_members_global(A a); // 友元全局函数可以访问A的私有成员变量和所有的公有成员};// 全局函数作为友元函数 void get_members_global(A a) {cout a.name_ is a.age_ years old endl;a.func(); }int main() {A a(Hubery,45);cout ***************************全局函数作为友元函数*************************** endl;get_members_global(a);return 0; }运行结果 4.2 类的成员函数为友元函数 类成员函数作为类的友元声明时只需在友元的名称前加上关键字friend其格式如下 friend 类型 类名::函数名(形式参数); 一个函数可以是多个类的友元函数只需要在各个类中分别声明。 代码如下 #include iostream #include string using namespace std;class A;class C {public://类的成员函数作为友元函数void get_members_member(A a);C(){cout C构造函数 endl;}~C(){cout C析构函数 endl;} };class A {private:string name_;int age_;public:A(const string name,const int age) : name_(name), age_(age) {cout A构造函数 初始化参数 endl;};virtual ~A(){cout A析构函数 endl;}void func(){std::cout As func() std::endl;}friend void C::get_members_member(A a); // C的成员函数做友元函数可以访问所有成员};// 类的成员函数作为友元函数 void C::get_members_member(A a) {cout a.name_ is a.age_ years old endl;a.func(); }int main() {A a(Hubery,45);C c;cout ***************************类的成员函数作为友元函数*************************** endl;c.get_members_member(a);return 0; }运行结果 这里用到类的前向声明。前向声明是一种不完全型forward declaration声明即只需提供类名(无需提供类实现)即可。前向声明功能有限:         (1不能定义类的对象。       2可以用于定义指向这个类型的指针或引用。       3用于声明(不是定义)使用该类型作为形参或者返回类型的函数。 4.3 类作为友元 友元类的所有成员函数都是另一个类的友元函数都可以访问另一个类中的隐藏信息包括私有成员和保护成员。当希望一个类可以访问另一个类的私有成员、保护成员时可以将该类声明为另一类的友元类。 定义友元类的语句格式如下 friend class 类名; friend和class是关键字类名必须是程序中的一个已定义的类。 代码如下 #include iostream #include string using namespace std;class B; // 前向声明class A {private:string name_;int age_;public:A(const string name,const int age) : name_(name), age_(age) {cout A构造函数 初始化参数 endl;};virtual ~A(){cout A析构函数 endl;}void func(){std::cout As func() std::endl;}friend class B; // 声明B为A的友元类B中成员函数可以访问A中所有的成员};class B {private:string name_;int age_;public:B(const string name,const int age) : name_(name), age_(age) {cout B构造函数 初始化参数 endl;};virtual ~B(){cout B析构函数 endl;}void func(){std::cout Bs func() std::endl;};// 友元类void get_members_class(A a){cout a.name_ is a.age_ years old endl;a.func();};};int main() {A a(Hubery,45);B b(Tom,24);cout ***************************友元类*************************** endl;b.get_members_class(a);return 0; }运行结果
http://www.pierceye.com/news/522288/

相关文章:

  • 张家界市网站建设设计简单的php购物网站源码
  • 网站的流量检测怎么做禹州做网站的公司
  • 百度网站录入北京到安阳高铁
  • 去马来西亚做网站网站安卓网站开发平台
  • jsp 哪些网站利用技术搭建网站做网站代理
  • 网站建设 分类广告html做网站自适应宽度
  • 鄂州市建设局网站佰牛网站建设
  • 织梦网站上传及安装步骤农畜产品销售平台的网站建设
  • 网站续费如何做分录做交互设计的网站
  • 国家网站备案查询系统安丘网站建设多少钱
  • 长沙公司网站设计鹤壁建设网站推广公司电话
  • 电子商务网站建设与管理实务电子商务网站的构建
  • 做网站的集团用什么自己做网站
  • 买网站空间网站模块图片
  • 上海建设网站公在微信上怎么开店
  • 哪家网站雅虎全球购做的好做一婚恋网站多少钱
  • 苏州企业网站公司都有哪些php开源企业网站系统
  • wordpress收录很慢自己的网站如何优化
  • 个人介绍网站源码1v1网站建设
  • 大宇网络做网站怎么样app制作器下载软件
  • 四川建行网站做网站公司职务
  • 广州定制网站设计图标设计免费 logo
  • 十大网站有哪些网站建设 模板
  • 网站流量一直下降中国十大品牌网
  • 同学录网站开发的背景域名注册网站免费
  • 旅游电子商务网站建设规划书温州网站建设策划方案
  • 国家住房建设部网站域名查询官方网站
  • app开发 网站开发统称宁波seo推广咨询
  • 专门做书单的网站网络营销策划方案的设计
  • 网站建设推广合同自己建设网站需要花多少钱