C++计算机杂谈C++

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

2018-03-24  本文已影响15人  Kai_Z

简介

本文要解决的两个问题:

什么是友元函数

类中的成员变量及成员函数有公有、私有、受保护的概念,当一个函数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

注意事项

上一篇下一篇

猜你喜欢

热点阅读