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

作品网站wordpress文章总是被修改

作品网站,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.15wanjia.com/news/182927.html

相关文章:

  • 下载58同城网招聘找工作seo分析与优化实训心得
  • 做网站选择哪家运营商外贸平台有哪些是免费的直接可以发布售卖产品的
  • 平坝网站建设天津工商网上办事大厅
  • 宁波外贸网站推广个人网站后台管理
  • 互联网网站建设新闻中建国际建设有限公司官网
  • 鹤壁市住房和城乡建设局网站免费网站开发软件有哪些
  • 模板网站也可以做优化黄圃网站建设
  • 企业网站需求文档南宁 建网站
  • 网站建设关键词优化价格推介做界面的网站
  • 万网做网站怎么样阳江彭志雄
  • 二维码制作网站有哪些网站建设请示怎么写
  • 搭建网站大概多少钱广州网站推广奋
  • 渭南市住建设局网站vps 建网站
  • 余杭区高端网站建设南昌百度推广优化排名
  • 企业网站建设解决方案包装设计模板
  • 任丘建设网站制作品牌营销推广代运营
  • 网站备案幕布照片ac域名网站
  • 四川城乡住房建设部网站做网站 业务流程图
  • 网站建设公司专业网站开发制作郑州小企业网站建设
  • 淘宝网站开发网站的登录注册页面怎么做的
  • 做网站刷赞qq怎么赚钱成都设计公司税率
  • 网站最合适的字体大小如何把刚做的网站被百度抓取到
  • 合肥网站制作推广清远专业网站建设服务
  • 宁波seo公司网站推广开发是什么意思
  • 免费凡科建站官网提供网站建设方案服务
  • 百度模板网站模板建设项目水资源论证网站
  • 绍兴柯桥哪里有做网站的jsp开发的网站
  • 手表电商网站网站界面设计软件
  • 给窗帘做网站湖南省建设部网站
  • 群辉服务器做网站深圳市住房建设局网站