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

北京便宜网站建设seo数据监控平台

北京便宜网站建设,seo数据监控平台,php源码项目门户网站开发,怎么更新电脑的wordpress友元函数的定义: 友元函数是在类定义中被声明为 “朋友” 的非成员函数。它可以访问类的私有成员和保护成员(变量和方法),就好像它是类的成员函数一样。友元函数的声明以friend关键字开头,在类的内部进行声明,但它的定义在类的外部&#xff…

友元函数的定义:

友元函数是在类定义中被声明为 “朋友” 的非成员函数。它可以访问类的私有成员和保护成员(变量和方法),就好像它是类的成员函数一样。友元函数的声明以friend关键字开头,在类的内部进行声明,但它的定义在类的外部,和普通函数一样。

代码如下:

#include <iostream>
using namespace std;
class A
{   
public:friend void set_show(int x, A &a); //该函数是友元函数的声明
private:int data;  //私有的成员变量
protected:int pro=8;  //受保护的成员变量
};
void set_show(int x, A &a)//友元函数定义,为了访问类A中的成员变量data以及pro
{a.data = x;cout << a.data << endl;cout << a.pro <<endl;         
}
int main(void)
{class A a;set_show(1,a);return 0;
}

友元类的定义:

友元类是被另一个类声明为 “朋友” 的类。友元类的所有成员函数都可以访问声明它为友元的类的私有成员和保护成员。友元类的声明也是在类的内部使用friend关键字进行,格式为friend class 友元类名。

友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。但是另一个类里面也要相应的进行声明。

代码如下:

class A {
public:friend class C;//友元类的声明
private:int data;
};
class C {  //友元类定义,为了访问类A中的成员
public:void set_show(int x, A& a){a.data = x;cout << a.data << endl;}
};
int main(void)
{class A a;class C c;c.set_show(1, a);//1return 0;
}

友元的作用:

友元提供了不同类的成员函数之间,类的成员函数和一般函数之间进行数据共享的机制。

通过友元,一个普通函数或者另一个类中的成员函数可以访问类中的私有成员和保护成员。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和

数据的隐藏性,导致程序可维护性变差。一个函数可以是多个类的友元函数,但是每个类中都要声明这个函数,友元函数的声明和权限无关。

注意事项

1.破坏封装性

友元机制虽然方便,但它在一定程度上破坏了类的封装性。封装性是面向对象编程的重要特性之一,它隐藏了类的内部实现细节,使得类的内部数据结构和操作不易被外部代码随意访问和修改。过度使用友元可能会导致代码的可维护性降低,因为外部代码可以直接访问类的私有成员,使得类的内部实现对外部代码的依赖增加。

2.谨慎使用友元类

当一个类被声明为另一个类的友元类时,友元类的所有成员函数都可以访问被访问类的私有成员。这可能会导致意外的访问和修改。

例如,如果B类是A类的友元类,那么B类中的所有成员函数(fast)都可以访问和修改A类的私有成员。所以在设计时,要确保友元类中的函数确实有合理的理由访问另一个类的私有成员。

class A {int dis = 5;int pri = 4;void work(){cout << "work" << endl;}
protected:int pro = 1;
public:friend class B;//类B作为类A的友元类
};
class B {
public:void fast(){A a;//访问A类中的私有成员dis和受保护的成员procout << "dis: " << a.dis << "pro: " << a.pro << endl;//访问A类中的私有成员方法a.work();//修改A类中的私有成员变量pria.pri = 12;cout << "修改后的pri: " << a.pri << endl;}
};
int main()
{B b;b.fast();return 0;
}

3.友元关系不能被继承。因为友元关系是基于类的明确声明,而不是基于继承关系。

4.友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。

5.友元关系不具有传递性。若类 B是类 A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明。

6.友元声明的位置和范围

在C++中,友元声明只是一种授权,它不遵循常规的访问控制和作用域规则。友元函数或友元类的声明可以放在类的私有、保护或公共部分,这只是一种声明位置的选择,不影响其作为友元访问类私有成员的能力。但是,友元函数本身的定义(如果是普通函数)或者友元类的成员函数定义(如果是友元类)还是要遵循常规的函数定义规则和作用域规则。例如,友元函数的定义通常需要在类的外部进行(除非是内联函数),并且要保证能够正确地访问所需的类对象和成员。

http://www.dinnco.com/news/39404.html

相关文章:

  • 阿里企业邮箱电话优化关键词方法
  • 网站建设市区四川省人民政府官网
  • 辽源市住房和城乡建设局网站开网店怎么推广运营
  • 网站建设市场调研框架百度搜索指数和资讯指数
  • 云南省住房与城乡建设厅网站seo网站优化培训找哪些
  • 廊坊app网站制作排位及资讯
  • 都江堰做网站谷歌推广真有效果吗
  • 苏州电子商务网站开发公司百度怎么收录自己的网站
  • 福田做商城网站建设哪家公司便宜点常宁seo外包
  • 电子商务公司建设网站方案设计上海百度推广官网
  • 西安比较好的网络公司重庆整站seo
  • 辽宁建设工程信息网查询官网福州百度网站快速优化
  • 网站管理员中心设计公司企业网站
  • 网站优化 前端怎么做一个新手怎么做推广
  • 销售平台排名知名的seo快速排名多少钱
  • 西安哪里做网站什么样的人适合做营销
  • 江苏苏州疫情最新消息网站优化公司收费
  • php网站怎么做seo长沙网站策划
  • app公司管理北京百度seo
  • 微信公众号微网站制作排名轻松seo 网站推广
  • 包头网站建设制作百度推广信息流有用吗
  • 电子商务网站策划书3500字网络营销推广方案设计
  • 网站建设公司营业执照经营范围宁波seo网络推广定制
  • 怎样制作网站?自己的网站怎么推广
  • 建立外贸英文网站应该怎么做seo网站分析工具
  • wordpress 个性网站网站推广的一般流程是
  • jsp旅游网站开发系统深圳哪里有网络推广渠避
  • 网站建设模板是什么软文案例500字
  • 新闻发布会的意义sem和seo区别与联系
  • 天津网站建设企业系统html+css网页制作成品