美文网首页
C++ friend关键字

C++ friend关键字

作者: 我阿郑 | 来源:发表于2021-12-24 11:15 被阅读0次
class Object
{
public:
    Object(int v) : value(v)
    {
    }
private:
    int value;
};

void Print(Object* p)
{
    printf("value: %d \n", p->value);
}

在全局函数Print中无法访问Object对象的私有成员

friend关键字

在类A中,用friend关键字可以将一个全局函数声明为该类的“朋友”。也可以将另一个类声明为该类的“朋友”

class Object
{
    // 将全局函数Print声明为“朋友”
    friend void Print(Object* p);

    // 将类Something声明为“朋友”
    friend class Something;
};

举例

class Object
{
    friend class Something;
      ....
};

class Something
{
public:
   void Print(Object* p)
   {
    printf("value: %d \n", p->value);
   } 
}

应用场景

负面作用: friend是不常用的语句,它破坏了访问修饰符的作用,对类的封装够成威胁。

正面作用: 可能的应用场景:在封装一个模块时,模块中有多个类,那么他们之间可以互相声明为朋友以便操作(他们是一伙的)。
也就是说,模块内部的类都是朋友,而外部调用者不是朋友、受访问修饰符的限制

相关文章

  • C++ friend关键字

    在全局函数Print中无法访问Object对象的私有成员 friend关键字 在类A中,用friend关键字可以将...

  • 【C++】C++学习笔记之五:友元

    在类中有一种函数声明前加friend关键字的函数声明方式,这种函数被称为C++类的友元函数 1. 友元的作用——破...

  • 2-1友元函数

    友元函数的概念想必学过c++类的同学都听过,就是在类A的类体内,声明函数时在返回类型前加入friend关键字,如T...

  • c++ 友元

    在c++中,通过关键字friend声明为友元。友元可以范围与其有好友关系的类中私有成员。友元包括友元函数和友元类。...

  • C语言和C++的区别到底有多少?不要再傻傻分不清楚了

    1、关键字 蓝色标注为C语言关键字,C++继承了C语言的所有关键字,以下红色标注为C++中含有但C语言没有的关键字...

  • C++的两个关键字——friend & static

    static static 本意为“静态”,其修饰的变量存放于静态存储区(同全局变量一样),其作用域和生存期也会与...

  • c++第一讲

    目标 c++关键字 命名空间 c++输入和输出 缺省参数 函数重载 引用 内联 auto关键字 基于范围的for循...

  • C++学习笔记目录

    C++初步 C++数据长度 C/C++ 堆 栈 静态 常量 代码 区 static关键字 C++类和对象 C++引...

  • C++类、对象

    一、类 类(Class)则是C++面向对象编程的实现方式。class是C++关键字,也是用于类声明的关键字。紧接c...

  • C++关键字的思考 (Boolan)

    C++关键字的思考 (Boolan) 本章内容:1 关键字的相关理解1.1 const关键字1.2 static关...

网友评论

      本文标题:C++ friend关键字

      本文链接:https://www.haomeiwen.com/subject/iaxkqrtx.html