zoukankan      html  css  js  c++  java
  • C++ 中的友元(friend)

    首先友元不是一个好的设计,它破坏了封装。并且自身有很多局限:比如友元关系不能被继承;友元关系是单向的,不具有交换性;友元关系不具有传递性。

    类内声明的 friend 变量(或者函数)在访问该类的成员时,不受 private 的约束。

    1. 实现单例

    class Printer {
    public:
        friend Printer& getPrinter();
    private:
        Printer() {
            std::cout << "Printer::Printer()" << std::endl;
        }
    };
    
    Printer& getPrinter() {
        static Printer p;         // 唯一的一个打印机对象;
        return p;
    }

    全局函数 getPrinter()被声明为 Printer类的一个 friend,使得 getPrinter() 不受 private constructors 的约束。

  • 相关阅读:
    宿舍助手app——个人工作第四天
    宿舍助手app——个人工作第三天
    对QQ输入法的评价
    冲刺9
    冲刺8
    冲刺7
    冲刺6
    冲刺5
    冲刺4
    冲刺3
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421252.html
Copyright © 2011-2022 走看看