c++中可不可以在一个类中访问另一个类的私有成员?

c++中可不可以在一个类中访问另一个类的私有成员?,第1张

可以,只要定义该类为另一个类的友元类即可。

友元类:

class A

{

friend class B

private:    int aa

}

class B

{

public: 

void output() 

{

cout <<a.aa <<endl

}

private:    A a

}

使用友元类时:

(1) 友元关系不能被继承。

(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。

(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明。

扩展资料:

友元类使用注意事项:

1、友元可以访问类的私有成员

2、只能出现在类定义内部,友元声明可以在类中的任何地方,一般放在类定义的开始或结尾。

3、友元可以是普通的非成员函数,或前面定义的其他类的成员函数,或整个类。

4、类必须将重载函数集中每一个希望设为友元的函数都声明为友元。

5、友元关系不能继承,基类的友元对派生类的成员没有特殊的访问权限。如果基类被授予友元关系,则只有基类具有特殊的访问权限。该基类的派生类不能访问授予友元关系的类。

参考资料来源:百度百科-友元类

在类A中声明B为友元类,这样B可以访问A的私有成员。另外变量在类中时不能赋值的,除非是const static变量

#include<iostream>

using namespace std

class A

{

public:

friend class B

void fn1()

{

cout<<b

}

private:

const static int b=1

}

class B

{

public:

void fn2()

{

A a

cout<<a.b<<endl

}

}

int main()

{

B c

c.fn2()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11605608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存