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

网站开发步骤说明书温州市建筑业联合会

网站开发步骤说明书,温州市建筑业联合会,廊坊免费网站建设模板,网站建设实践收获注意:声明类,只是告知有这个类未完全定义,若使用类里具体属性,要么将访问块(函数之类)放到定义后,要么直接完全定义 C 友元函数/类的使用关键点(声明顺序为核心) 1. 友元…

注意:声明类,只是告知有这个类未完全定义,若使用类里具体属性,要么将访问块(函数之类)放到定义后,要么直接完全定义

C++ 友元函数/类的使用关键点(声明顺序为核心)


1. 友元函数
  • 声明顺序

    • 非成员函数:需在类外提前声明函数,再在类内标记为友元。

      cpp

      复制

      void helper(); // 前向声明
      class MyClass {friend void helper(); // 正确:函数已声明
      };
      void helper() { ... }     // 实现
    • 直接定义在类内:无需提前声明,但视为隐式内联。

      cpp

      复制

      class MyClass {friend void helper() { ... } // 直接定义(隐式内联)
      };
  • 易错点
    若未提前声明,友元函数可能被误认为新函数(导致链接错误)。


2. 友元类
  • 声明顺序

    • 被友元的类(如 B)需至少前向声明,再在目标类(如 A)中标记为友元。

      cpp

      复制

      class B; // 前向声明
      class A {friend class B; // 正确:B已声明
      };
      class B { ... };     // 完整定义
    • 成员函数访问私有成员时B 的成员函数实现必须放在 A 的定义之后。

      cpp

      复制

      class B {
      public:void accessA(A& a); // 声明
      };
      class A {friend void B::accessA(A&);int secret;
      };
      void B::accessA(A& a) { a.secret = 42; } // 正确:A已定义
  • 易错点
    若 B 未前向声明直接标记为友元,可能编译失败(依赖编译器)。


3. 其他类的成员函数作为友元
  • 声明顺序
    成员函数所属的类(如 B必须先完整定义,再在目标类(如 A)中声明友元。

    cpp

    复制

    class B {
    public:void memberFunc(); // 声明
    };
    class A {friend void B::memberFunc(); // 正确:B已完整定义
    };
    void B::memberFunc() { ... }    // 实现需在A定义后
  • 易错点
    若 B 的成员函数实现放在 A 定义前,无法访问 A 的私有成员。


4. 核心原则
  1. 前向声明优先:友元函数/类需在使用前声明。

  2. 定义顺序敏感:访问私有成员的代码必须出现在被友元类之后。

  3. 单向性:友元关系不传递、不继承(如 A 友元 BB 的友元不自动成为 A 的友元)。


示例总结

cpp

复制

// 案例:B类的成员函数访问A的私有成员
class B; // 前向声明(非必须,但推荐)class A {friend class B; // 或 friend void B::func();
private:int secret;
};class B {
public:void func(A& a) { a.secret = 42; } // 正确:A已定义
};
http://www.dtcms.com/a/520960.html

相关文章:

  • wdt接口优化
  • 东莞网站建设服务协议wordpress字段添加按钮
  • 网站建设的技术标准中小企业网站建设渠道
  • 创建网站需要什么技术个人网站建设的方案
  • 为什么做营销型网站邯郸渊博网络有限公司
  • dir()与help()
  • chromium项目中添加源文件(BUILD.gn项目中添加源文件)
  • 网站建设远程工作太原网站建设联系方式
  • 宁波模板建站源码展示网站报价
  • 台式机电脑i9-9900K+Z390-PRO-A更换主板的辛路历程
  • 关于使用「音流」连接「Navidrome」的异地播放问题解决方案
  • 郑州网站优化价格怎么查看网站的dns
  • 谈谈 Android 中对 Binder 的理解与小结
  • 解码Linux文件IO之库的制作与应用
  • RK Android15系统定制将物理按键映射为设置键的完整实现
  • 软件下载网站如何履行安全管理网站建设的流程图
  • 常用个人网站是什么wordpress怎么设置菜单
  • 梯度下降求解线性回归问题
  • 快手推出“工具+模型+平台”AI编程生态!大厂挤占AI赛道,中小企业如何突围?
  • 望京做网站公司做装修网站如何
  • 上海免费模板建站微网站开发第三方平台
  • 网站logo如何修改struck wordpress
  • ESLint 配置文件 (.eslintrc.js) 完整指南
  • 深圳网站建设 卓越创锟鹏建设招聘网站
  • 如何软件开发windows优化大师是官方的吗
  • 计算机网络全栈知识:从物理层到应用层
  • 矩阵题型hot100
  • TCP网络编程本质
  • 内蒙古建设厅官网站凡科建站公司
  • MySQL专题Day(3)————索引