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

哪里免费做网站google首页

哪里免费做网站,google首页,江阴网站建设多少钱,wordpress添加html页面在某些场合,一个完全无关的类由于某些特殊原因需要访问到某个 protected 成员,甚至某个 private 成员如果所有的东西都声明成public 吧。这样固然可以,但这样就把原来我们想方设法要保护的方法或属性又暴漏了。 在 C 里,友元&…
  • 在某些场合,一个完全无关的类由于某些特殊原因需要访问到某个 protected 成员,甚至某个 private 成员
  • 如果所有的东西都声明成public 吧。这样固然可以,但这样就把原来我们想方设法要保护的方法或属性又暴漏了。

  • 在 C++ 里,友元(Friend)是一种特殊的机制,它允许一个类或函数访问另一个类的私有成员和保护成员,这打破了类的封装性原则,但在某些特定场景下能提高代码的灵活性和效率。
  • 声明一个友元关系的语法:只要在类声明里的某个地方加上一条 friend class  ** 就行了。
  • • 注:这条语句可以放在任何地方,放在 public,protected, private 段落里都可以。

1. 友元函数

友元函数是在类外部定义的普通函数,但在类内部将其声明为友元,这样该函数就能访问类的私有和保护成员。

#include <iostream>class Rectangle {
private:int width;int height;public:Rectangle(int w, int h) : width(w), height(h) {}// 声明友元函数friend int calculateArea(const Rectangle& rect);
};// 友元函数的定义
int calculateArea(const Rectangle& rect) {return rect.width * rect.height;
}int main() {Rectangle rect(5, 3);std::cout << "Area: " << calculateArea(rect) << std::endl;return 0;
}

在这个例子中,calculateArea 是一个友元函数,它可以直接访问 Rectangle 类的私有成员 width 和 height,从而计算矩形的面积。 

2. 友元类

可以将一个类声明为另一个类的友元类,这样友元类的所有成员函数都可以访问该类的私有和保护成员。

#include <iostream>class Rectangle {
private:int width;int height;public:Rectangle(int w, int h) : width(w), height(h) {}// 声明友元类friend class AreaCalculator;
};class AreaCalculator {
public:int calculateArea(const Rectangle& rect) {return rect.width * rect.height;}
};int main() {Rectangle rect(5, 3);AreaCalculator calculator;std::cout << "Area: " << calculator.calculateArea(rect) << std::endl;return 0;
}

在这个例子中,AreaCalculator 是 Rectangle 类的友元类,所以 AreaCalculator 类的成员函数 calculateArea 可以直接访问 Rectangle 类的私有成员 width 和 height

3. 友元成员函数

除了将整个类声明为友元,还可以将另一个类的某个成员函数声明为友元。

#include <iostream>class Rectangle; // 前向声明class AreaCalculator {
public:int calculateArea(const Rectangle& rect);
};class Rectangle {
private:int width;int height;public:Rectangle(int w, int h) : width(w), height(h) {}// 声明友元成员函数friend int AreaCalculator::calculateArea(const Rectangle& rect);
};// 友元成员函数的定义
int AreaCalculator::calculateArea(const Rectangle& rect) {return rect.width * rect.height;
}int main() {Rectangle rect(5, 3);AreaCalculator calculator;std::cout << "Area: " << calculator.calculateArea(rect) << std::endl;return 0;
}

在这个例子中,AreaCalculator 类的 calculateArea 成员函数被声明为 Rectangle 类的友元,因此它可以访问 Rectangle 类的私有成员。

4.友元关系的特点

  • 非传递性:如果类 A 是类 B 的友元,类 B 是类 C 的友元,这并不意味着类 A 是类 C 的友元。
  • 单向性:友元关系是单向的,即如果类 A 是类 B 的友元,并不意味着类 B 是类 A 的友元。
  • 不具有继承性:友元关系不能被继承,即如果类 A 是类 B 的友元,类 C 是类 B 的派生类,这并不意味着类 A 是类 C 的友元。

5. 注意事项

  • 友元机制破坏了类的封装性,过度使用会使代码的可维护性变差,因此应谨慎使用。
  • 友元函数不属于类的成员函数,它没有 this 指针。

通过友元关系,可以在必要时让特定的函数或类访问类的私有和保护成员,从而实现更灵活的编程。


未完待续。。。

http://www.dtcms.com/wzjs/161981.html

相关文章:

  • 广州seo网站靠谱seo 网站排名
  • yahoo网站提交入口营销推广手段有什么
  • 免费中文企业网站模板百度sem推广具体做什么
  • 企业网站的建立联系方式seo线下培训机构
  • 软件开发与网站开发手机最新产品新闻
  • 上海 餐饮网站建设微平台推广
  • 跨境电商代运营公司十强网站关键词优化排名外包
  • java做网站建设后台b站推广入口2023mmm
  • 通过模版做网站搜索引擎推广的关键词
  • 深圳做手机商城网站建设2021拉新推广佣金排行榜
  • 初学php者网站首页怎么做品牌推广与传播
  • 长沙企业建站系统百度网页
  • 在线ppt制作网站有哪些站长推荐产品
  • 南京网站建设知识做任务赚佣金的正规平台
  • 做网站被骗去哪投诉百度竞价推广培训
  • 衡水网站建设公司联系电话seo技术培训海南
  • 义乌购物网站建设多少钱网站快速建站
  • 网站客服弹窗代码马鞍山seo
  • 建设网站材料可以下载吗石家庄自动seo
  • 百度公司做网站可靠吗樱花bt引擎
  • 临沂网站制作网站近两年成功的网络营销案例
  • 和人妖做的视频网站长沙市云网站建设
  • 做外围什么网站有客户2023年6月份疫情严重吗
  • 成功网站建设案例网络营销师课程
  • 深圳市建设工程交易中心网站如何免费推广网站
  • 凡科网站是什么做的2022年五月份热点事件
  • 佛山专业英文网站建设学生个人网页设计模板
  • 福建住房和城乡建设部网站百度推广深圳分公司
  • 拨付网站建设费用的报告360开户推广
  • jsp动态网站开发环境搭配郑州网站建设专业乐云seo