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

百度快照怎么优化排名天津网站排名优化

百度快照怎么优化排名,天津网站排名优化,智慧团登录官方网站,打开自己的网站是别人的域1. 友元函数 1.1 简介 友元函数是在类的声明中声明的非成员函数#xff0c;它被授予访问类的私有成员的权限。这意味着友元函数可以访问类的私有成员变量和私有成员函数#xff0c;即使它们不是类的成员。 一个类中#xff0c;可以将其他类或者函数声明为该类的友元#…1. 友元函数 1.1 简介 友元函数是在类的声明中声明的非成员函数它被授予访问类的私有成员的权限。这意味着友元函数可以访问类的私有成员变量和私有成员函数即使它们不是类的成员。 一个类中可以将其他类或者函数声明为该类的友元使得这些友元函数能够访问该类的私有成员和受保护成员。 1.2 特点 友元函数可以直接访问类的私有成员和受保护成员包括私有成员变量和私有成员函数无需通过对象或者类的接口来访问。友元函数在声明时需要在类内部进行声明并使用关键字 friend 进行修饰。但它不是类的成员函数因此它在类的作用域之外定义和实现友元关系是单向的如果A是B的友元那么B不一定是A的友元。不继承权限友元函数的权限仅限于声明它的类而不会被派生类继承。 1.3 使用场景 访问私有成员 当需要在某个外部函数中直接访问一个类的私有成员时可以将该函数声明为友元函数。 #include iostreamclass MyClass { private:int privateData;public:MyClass(int data) : privateData(data) {}friend void printPrivateData(const MyClass obj); };void printPrivateData(const MyClass obj) {std::cout Private data: obj.privateData std::endl; }int main() {MyClass obj(42);printPrivateData(obj); // 调用友元函数访问私有成员return 0; }实现操作符重载 #include iostreamclass Complex { private:double real;double imaginary;public:Complex(double r, double i) : real(r), imaginary(i) {}friend std::ostream operator(std::ostream os, const Complex obj); };std::ostream operator(std::ostream os, const Complex obj) {os obj.real obj.imaginary i;return os; }int main() {Complex c(3.5, 2.5);std::cout Complex number: c std::endl; // 使用友元函数重载输出操作符return 0; }声明了一个友元函数operator用于重载输出操作符以便能够以自定义的方式打印Complex类的对象。在main函数中我们创建了一个Complex对象c并使用std::cout和友元函数operator来打印该对象的值。 3. 提供类之间的非成员函数接口 如果两个类之间需要共享信息或者互相调用对方的非公开成员可以使用友元关系。 #include iostreamclass ClassB;class ClassA { private:int data;public:ClassA(int d) : data(d) {}friend void processData(const ClassA objA, const ClassB objB); };class ClassB { private:int data;public:ClassB(int d) : data(d) {}friend void processData(const ClassA objA, const ClassB objB); };void processData(const ClassA objA, const ClassB objB) {std::cout Data from ClassA: objA.data std::endl;std::cout Data from ClassB: objB.data std::endl; }int main() {ClassA objA(42);ClassB objB(24);processData(objA, objB); // 调用友元函数处理两个类的数据return 0; }定义了两个类ClassA和ClassB并在它们之间声明了一个友元函数processData。这个函数可以访问ClassA和ClassB的私有成员变量并在函数中处理这些数据。在main函数中我们创建了一个ClassA对象objA和一个ClassB对象objB然后调用友元函数processData来处理这两个类的数据。 1.4 注意 友元关系破坏了封装性原则因此应谨慎使用。过度依赖友元关系可能会导致代码不易维护和扩展。友元关系没有继承性质只限于被声明为友元的类或者函数能够访问相应的成员。 2. 友元类 2.1 简介 C中的友元类friend class是指一个类可以将另一个类声明为友元从而允许友元类访问其私有成员。 2.2 特点 友元关系是单向的如果类A是类B的友元则只有类B能够访问类A的私有和保护成员反之则不成立。友元关系不可传递即使类A是类B的友元而类B又是类C的友元但并不能推导出类A是类C的友元。友元关系没有继承性即使派生类继承了基类基类中声明为友元的其他类并不会自动成为派生类的友元。 2.3 使用场景 信息封装当一个类需要将其私有成员暴露给另一个类以实现特定功能时可以将另一个类声明为友元类。这样友元类就可以直接访问声明它的类的私有成员从而实现类之间的信息封装。成员访问优化有时候多个类之间需要频繁访问彼此的私有成员而不希望通过公有接口进行访问。在这种情况下可以将这些类声明为友元类以提高成员访问的效率。 代码 class FriendClass { private:int privateData;public:FriendClass(int data) : privateData(data) {}friend class MyClass; };class MyClass { public:void accessFriendData(const FriendClass obj) {int data obj.privateData; // 友元类可以访问FriendClass的私有成员} };int main() {FriendClass obj(42);MyClass myObj;myObj.accessFriendData(obj); // MyClass通过友元类访问FriendClass的私有成员return 0; }上述示例中定义了两个类FriendClass和MyClass。FriendClass将MyClass声明为友元类从而允许MyClass访问FriendClass的私有成员变量privateData。在MyClass中我们定义了一个成员函数accessFriendData它通过友元类的权限访问FriendClass的私有成员。在main函数中创建了FriendClass的对象obj和MyClass的对象myObj并通过myObj调用accessFriendData来访问FriendClass的私有成员。 两个代码互为友元代码 #include iostreamusing namespace std;class B; // 前向声明class A { private:int privateDataA; public:A() : privateDataA() {};friend class B; // 声明B为A的友元类void displayPrivateData(const B b); };class B { private:int privateDataB; public:B() : privateDataB(10) {};friend class A; // 声明A为B的友元类void setPrivateData( A a, int data) {a.privateDataA data; // 可以直接访问A中的私有成员cout Successfully set private data of A from B: a.privateDataA endl;} };void A::displayPrivateData(const B b) {cout Accessing private data of B from A: b.privateDataB endl; }int main() {A a;B b;b.setPrivateData(a, 42); // 通过B类的成员函数修改A类的私有成员数据a.displayPrivateData(b); // 通过A类的成员函数访问B类的私有成员数据return 0; }运行结果 Successfully set private data of A from B: 42 Accessing private data of B from A: 10A和B是两个类。通过将彼此声明为友元类它们可以直接访问对方的私有成员。在主函数中我们创建了一个A对象a和一个B对象b并使用友元函数setPrivateData从b中修改了a的私有成员数据并使用友元函数displayPrivateData从a中访问了b的私有成员数据。
http://www.hkea.cn/news/14399918/

相关文章:

  • 网站建设西班牙语正规网络推广平台
  • 公司网站建设费入哪个科目全国高校校园网站建设与发展高级研修班
  • 唐山建设网站公司注册无地址注册公司
  • 怎样做1个网站wordpress 编辑首页
  • 公司网站修改 优帮云家装设计学校
  • 微信视频网站怎么做的好处盘龙区网络推广
  • 专门做化妆的招聘网站免费下载ppt模板的网站有哪些
  • 点胶机 东莞网站建设c2c模式的诞生与发展
  • 怎么查网站服务器深圳做微信网站多少钱
  • 呼市网站建设手机排行榜中关村
  • 无锡朝阳网站推广梦幻西游网页版平民攻略
  • 有云服务器和域名怎么做网站asp网站知道用户名是admin
  • 给别人做网站用什么建站公司现状
  • 衡水做网站的公司免费发广告的软件
  • 中小企业微信网站建设慧聪网郭凡生
  • 商务网站建设的调研做电商网站哪里好
  • 济南网站建设套餐第三方小程序商店
  • 网站建设秋实wordpress图片 转移oss
  • 广州外贸网站建设推广企业宣传视频制作公司
  • 58同城做网站找谁wordpress 文字 居中
  • 四川专门做招聘酒的网站衡水做外贸网站
  • 网站百度不收录了西安企业网站设计哪家专业
  • 企业网站关键词优化排名应该怎么做有没有免费的推广网站
  • 做糕点的网站东源县住房和城乡建设部网站
  • 免费的行情软件app网站宣传片拍摄计划方案
  • 申请中网可信网站中国有多少网站有多少域名
  • 商城网站源码免费宁波网站开发制作
  • 如何把网站做成软件安庆网站建设推荐秒搜科技
  • ip提取网站源码带后台织梦软件展示网站
  • 网站建设与维护管理实训报告福州企业建站服务