博客
关于我
C++基础(十三)友元
阅读量:276 次
发布时间:2019-03-01

本文共 1827 字,大约阅读时间需要 6 分钟。

在C++编程中,友元(friend)是一种强烈的访问权限控制机制,允许类之间或者类内部某些成员之间实现特定的访问权限。友元的使用可以帮助开发者在需要时提供更灵活的访问权限,而不必依赖于继承关系。

1. 全局函数做友元

友元可以是全局函数,也可以是另一个类的成员。下面我们来看一个实例代码:

#include 
using namespace std;class Person { //友元,接收一个Person对象的指针 friend void showDetail(Person* p);public: Person() : m_Age(10), m_Name(20) {}public: int m_Age;private: int m_Name;};void showDetail(Person* p) { cout << "age : " << p->m_Age << endl; cout << "name : " << p->m_Name << endl;}int main() { return 0;}

在这个例子中,showDetail 是一个全局函数,被声明为Person类的友元。这样,当创建Person对象时,可以通过调用showDetail 函数来访问其私有成员变量。

2. 友元类

友元还可以是另一个类。下面是一个示例:

#include 
#include
using namespace std;class Build;class Friend {public: Friend(); Build* build; void visit();};class Build { // 声明Friend类为Build的友元 friend class Friend;public: Build(); string mName;private: string mAge;};// 在Friend类构造函数中创建Build对象Friend::Friend() { build = new Build();}void Friend::visit() { cout << build->mName << endl; cout << build->mAge << endl;}int main() { Friend f; f.visit(); system("pause"); return 0;}

在这个例子中,Build 类声明Friend 类为其友元,这样Friend 类的成员可以访问Build 类的私有成员。

3. 友元函数

友元函数可以被另一个类访问,但不能在另一个类中直接声明。下面是一个示例:

#include 
#include
using namespace std;class Builds;class Friends {public: Friends(); Builds* build; void visit();};class Builds { // 声明Friends类的visit函数为Builds的友元 friend void Friends::visit();public: Builds(); string mName;private: string mAge;};void Friends::visit() { cout << build->mName << endl; cout << build->mAge << endl;}Builds::Builds() : mName("godv"), mAge("666") {}Friends::Friends() { build = new Builds();}int main() { Friends fs; fs.visit(); return 0;}

在这个例子中,Builds 类声明Friends 类的visit 函数为其友元。这样,当Friends 类的对象调用visit 函数时,可以访问Builds 类的私有成员。

转载地址:http://cbzo.baihongyu.com/

你可能感兴趣的文章
Objective-C实现bogo sort排序算法(附完整源码)
查看>>
Objective-C实现boruvka博鲁夫卡算法(附完整源码)
查看>>
Objective-C实现Boyer-Moore字符串搜索算法(附完整源码)
查看>>
Objective-C实现BP误差逆传播算法(附完整源码)
查看>>
Objective-C实现breadth First Search广度优先搜索算法(附完整源码))
查看>>
Objective-C实现BreadthFirstSearch广度优先搜索算法(附完整源码)
查看>>
Objective-C实现BreadthFirstShortestPath广度优先最短路径算法(附完整源码)
查看>>
Objective-C实现bubble sort冒泡排序算法(附完整源码)
查看>>
Objective-C实现bucket sort桶排序算法(附完整源码)
查看>>
Objective-C实现Burke 抖动算法(附完整源码)
查看>>
Objective-C实现Burrows-Wheeler 算法(附完整源码)
查看>>
Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
查看>>
Objective-C实现calloc函数功能(附完整源码)
查看>>
Objective-C实现canny边缘检测算法(附完整源码)
查看>>
Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
查看>>
Objective-C实现check strong password检查密码强度算法(附完整源码)
查看>>
Objective-C实现chudnovsky algorithm楚德诺夫斯基算法(附完整源码)
查看>>
Objective-C实现CIC滤波器(附完整源码)
查看>>
Objective-C实现circle sort圆形排序算法(附完整源码)
查看>>
Objective-C实现CircularQueue循环队列算法(附完整源码)
查看>>