美文网首页C++计算机杂谈C++
C++类中的友元函数[1]

C++类中的友元函数[1]

作者: Kai_Z | 来源:发表于2018-03-24 17:38 被阅读15次

简介

本文要解决的两个问题:

  • 什么是友元函数?
  • 如何定义友元函数?

什么是友元函数

类中的成员变量及成员函数有公有、私有、受保护的概念,当一个函数A不是类的成员函数,但是希望可以访问类中的非公有成员,此时需要将函数A声明为类的友元函数

总的来说:

  • 友元函数并不属于类的成员函数
  • 友元函数可以访问类的非公共有成员

如何定义友元函数

如果一个类希望把一个函数作为自己的友元函数,只需要增加一条以friend关键字开始的函数声明语句

例程

#include <iostream>
#include <string>

class Book
{
public:
    friend void friendPrint(Book& bk); //声明friendPrint为Book类的友元函数
    Book(std::string& title,unsigned int price)
        :bookTitle(title),bookPrice(price){}
    std::string getTitle(void) const
    {
        return bookTitle;
    }
    unsigned int getPrice(void) const
    {
        return bookPrice;
    }
private:
    std::string bookTitle;
    unsigned int bookPrice;
};
void friendPrint(Book& bk)
{
    std::cout << "friend function:-------" << "\n";
    //注意这里访问Book::bookTitle与Book::bookPrice的方式
    //它们都是私有成员哦
    std::cout << "bookTitle:" <<bk.bookTitle  << "\n"
        << "boolPrice:" << bk.bookPrice << "\n";
}
void unfriendPrint(Book& bk)
{
    std::cout << "unfriend function:--------" << "\n";
    std::cout << "bookTitle:" << bk.getTitle() << "\n"
        << "boolPrice:" << bk.getPrice() << "\n";
}

int main()
{
    Book bk(std::string("C++ Primer"), 88);
    unfriendPrint(bk);
    friendPrint(bk);
    return 0;
}
//输出结果:
unfriend function:--------
bookTitle:C++ Primer
boolPrice:88
friend function:-------
bookTitle:C++ Primer
boolPrice:88

注意事项

  • 友元函数的声明是用于指定某个函数对于类的访问权限,并不是通常意义上的函数声明,所以我们需要在类外针对该函数再次声明

相关文章

  • C++语言基础(03)

    1.内存分配 C/C++ 内存分区: java 创建对象 2.常函数 3.友元函数和友元类 友元函数 友元类 4....

  • 2001.C++BASE-friend(友元)

    转:关于C++中的友元函数的总结 1.友元函数的简单介绍 1.1为什么要使用友元函数 在实现类之间数据共享时,减少...

  • c++ 友元

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

  • 10-C++远征之模板篇-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 ...

  • 慕课网-C++远征之模板篇(上)-学习笔记

    C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 ...

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

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

  • C++中的友元

    友元的介绍 什么是友元?友元是C++中的一种关系友元关系发生在函数与类之间或者类与类之间友元关系是单项的,不能传递...

  • C++类中的友元函数[1]

    简介 本文要解决的两个问题: 什么是友元函数? 如何定义友元函数? 什么是友元函数 类中的成员变量及成员函数有公有...

  • 第十一章 使用类(2)友元

    (二)友元 1.友元的概念 友元有三种:友元函数,友元类,友元成员函数。这里主要介绍友元函数。通过让函数成为类的...

  • 14/14模板和友元之非模板友元

    1.非模板友元:将模板类中的函数作为友元

网友评论

    本文标题:C++类中的友元函数[1]

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