谁来详细讲说一下C++的公有,保护,私有和友元呢

如题所述

公有:该变量(或函数)在程序内外都可以访问,直接使(调)用
私有:一般用在类内,某一类的私有变量/成员,仅该类内的成员函数或友元函数可以访问.
友元:一般是用在函数前,如果某个函数或某个"动作"不属于某类,但又想要访问某类内私有变量之类的,可以定义友元.比如定义复数类时,复数的 实部/虚部属于私有成员,返回该复数的实部或虚部的那个函数应该公有,但复数的加减乘除运算,即运算符号功能应该定义为友元-----不专属于该类,但又要实现访问该类的成员.

通俗点打个比喻:国家内部事务属于私有,但外交部发言属公有----负责把内部事务通报出去.友元可以理解为友好国家,不用通过外交部,可以直接收到内部事务的情况资料.

纯属个人浅见,请勿见笑追问

那如果建一个C++窗口工程,按钮的触发要生成一个自己定义的类的对象,该对象要调用一个友元函数,那么友元函数在类的头文件声明吗?又是在哪里定义的呢?顺便说一下声明格式吧,我懒得去翻书了。谢谢

追答

这里有一个例子:
#include
using namespace std;
class AA
{
int a;
public:
AA(int n=0):a(n){}
int getValue() const {return a;}//2
friend const void show(AA aa){cout<<aa.a;} ;//该函数不严格属于类的成员,但是要访问到类的"私有财产" :a
//所以声明为友元,并且必须在类内声明.
};
main()
{
AA b;
b=120000;
show(b); //注意调用格式,如果是类的公有函数,形式为 b.show()的形式,但这个不是,只是友元罢了,当普通函数调用就行.
}

该例子中,类的定义及实现都写在了一个文件里,严格来说,应该把类定义写在 "类.h" 头文件中,类的函数包括友元函数实现写在"类.cpp" 程序中.

温馨提示:答案为网友推荐,仅供参考
相似回答