zoukankan      html  css  js  c++  java
  • C++之友元

     

    一、友元函数

    分为友元全局函数和友元成员函数

    1.友元全局函数

     

    2.友元成员函数

     

    3.补充说明

    <1> 友元带来方便的同时也带来了风险,比如破坏类的封装性,除非有特殊需要,否则一般情况下不建议处处使用友元。

     

    <2> 友元函数可以存取私有成员、公有成员和保护成员,即可以出现在类的任何部分。(但建议将其写在类的最前边)

    friend关键字与访问限定符public、private、protected并不形成交叉关系,也即它们并不构成约束,所以友元函数的声明可以写在类的任何位置,但建议写在类的最前面。

    【因为作为一个类来说,它对外如何进行暴露是非常重要的,把重要的信息放在前面有助于编程过程中减小犯错的概率】

     

    <3> 使用友元成员函数时注意不要将头文件互相包含,会造成死循环。

    例:类2的某成员函数是类1的友元函数

    可以在类1(被访问私有成员的类)的头文件中包含定义了友元成员函数的类2头文件,然后在类2头文件中“class 类1;”即前置声明类1,再在类2的cpp中包含类1头文件,以具体实现友元成员函数

    -------类1.h-------

    #include "类2.h"

    class 类1
    {
    friend void 类2::f(类1 &);
    };

    -------类1.h-------


    -------类2.h-------

    class 类1;

    class 类2
    {
    void f(类1 &);
    };

    -------类2.h-------


    -------类2.cpp-------

    #include "类1.h"

    void 类2::f(类1 &)
    {
    }

    -------类2.cpp-------

     

    二、友元类

     

    三、友元注意事项

     

     

  • 相关阅读:
    JDBC的简单使用
    IO流知识点总结
    使用IO流实现一个简单的小Dome
    java编程实现日历
    如何用Java实现DVD的一些功能
    java 入门学习
    在mac电脑上创建java的一些简单操作
    Java Struts框架的一些问答面试题
    分层开发的思想
    JDBC连接数据库
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9675540.html
Copyright © 2011-2022 走看看