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

浙江网站建设哪家权威如何做网站搜索引擎优化

浙江网站建设哪家权威,如何做网站搜索引擎优化,自己做网站挣钱不,北京网站定制报价友元函数的定义: 友元函数是在类定义中被声明为 “朋友” 的非成员函数。它可以访问类的私有成员和保护成员(变量和方法),就好像它是类的成员函数一样。友元函数的声明以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.tj-hxxt.cn/news/75312.html

相关文章:

  • 做一个官方网站多少钱网络营销服务策略
  • 网络营销论文题目精选seo案例分析
  • 网络推广网站大全百度代理公司查询
  • 网站入口首页个人接外包项目平台
  • 重庆网站建设yunhuit小江seo
  • 全球知名外贸b2b网站大全搜索引擎谷歌
  • 广告优化师前景怎样最好用的系统优化软件
  • 三站合一的网站怎么做电脑培训学校排名
  • 限制网站访问怎么办网络搜索引擎
  • 建瓯市规划建设旅游局网站加强服务保障满足群众急需i
  • 商城网站设计高端营销型网站制作
  • 长沙网页设计培训推荐沙大计教育专业优化设计七年级下册语文答案
  • 网站名称在哪里修改网站推广哪个平台最好
  • 快速申请免费个人网站电子商务网站推广策略
  • 如何用 python 做网站搜索引擎最佳化
  • 网站策划案软件开发工具
  • 厦门网站建设公司排名网络推广合作协议
  • nodejs做静态网站百度贴吧免费发布信息
  • 网站开发与软件开发网络推广培训
  • 做一个公司官网湖南网站seo营销
  • 怎么查看网站死链友情链接是什么
  • 新手做网站免费教程制作网站的最大公司
  • 有链接的网站怎么做媒体网络推广价格优惠
  • 电子商务网站建设需要的语言seo关键词软件
  • 罗湖网站(建设深圳信科)云建站
  • 制作网站的app吗seo是什么级别
  • 福建省人民政府关于印发福建省定价目录的通知关键词优化公司哪家推广
  • 最好的企业网站源码什么是seo文章
  • 网站移动端做pc端的301跳转站长之家0
  • 英文网站建设公司广东今日最新疫情通报