博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php不可以声明友元类,[C++]【类】友元的三种声明及注意事项
阅读量:6657 次
发布时间:2019-06-25

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

类允许其他类或者函数访问它的非公有成员,但我们需要将访问类非公有成员的其他类或者函数成为它的友元。

一、友元函数

如果类想要把一个函数作为他的友元,只需要增加一条以 friend 关键字开始的函数声明语句即可。

例如:

class A{

friend void fri_fun(A);

private:

int a=9;

};

void fri_fun(A aa){

cout<

}

在代码中,我们在类 A 中声明了函数 fri_fun ,并以 friend 关键字加以说明,此时我们可以在函数 fri_fun 中访问 A 类的私有成员。

友元的声明仅仅指定了访问的权限,而非一个通常意义上的函数声明。如果我们希望类的用户能过调用某个友元函数,那么我们就必须在友元声明之外再专门对函数进行声明。

一些编译器允许在尚无友元函数的初始声明的情况下就调用它。即使这样,也最好还是提供一个独立的函数声明。

二、友元类

友元类也需要 friend 关键字加以说明。

例如:

class B{

friend class A;

int s=9;

};

class A {

public:

void aa(B c) {

cout << c.s << endl;

}

};

类 A 的成员函数可以访问类 B 的私有成员。

注意:如果我们把类 A 放在类 B 的前边,此时编译会出错,因为在编译类 A 时,我们并没有定义类 B。

我们也可以将成员函数作为另一个类的友元,我们将上一个代码更改,仅仅让类 A 的成员函数 aa 可以访问类 B 的私有成员:

class B;

class A{

public:

void aa(B c);

};

class B{

friend void A::aa(B);

int s=9;

};

void A::aa(B c){

std::cout << c.ss << std::endl;

}

我们将类 A 的成员函数 aa 作为类 B 的友元函数,这是我们必须在类 B 之前声明函数 aa (我们的代码,在类 A 中已经声明),在类 B 之后定义(如果用到类 B 的成员),在友元声明中我们必须指明该函数属于哪一个类。

在类 A 中,成员函数 aa 的形参包含 B 类类型元素,所以在类 A 之前,必须有类 B 的前向声明。

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

你可能感兴趣的文章
十六进制转二进制
查看>>
设计模式之模板模式
查看>>
直接插入排序
查看>>
springmvc4.x返回json数据
查看>>
日志管理-slf4j+logback
查看>>
iOS逆向之三-authorized_keys ssh登录越狱手机免验证设置
查看>>
socket 编程入门教程(二)winsock演示程序:2、TCP Server
查看>>
ARouter解析一:基本使用及页面注册源码解析
查看>>
vlc android 代码编译
查看>>
elasticsearch集群发现机制:Zen Discovery
查看>>
看这里,智和网管平台的网络拓扑功能更新啦
查看>>
Intent跳转详解
查看>>
mybatis学习笔记(6)-输入映射
查看>>
Android中Preference的使用以及监听事件分析
查看>>
Heroku error:Permission denied (publickey)
查看>>
解决linux的-bash: ./xx: Permission denied
查看>>
Laravel 第三方登陆之 Socialite Providers
查看>>
Ubuntu14.10 remove ibus 之后
查看>>
Spring第一天
查看>>
功能需求流程、流程图制作软件
查看>>