通讯设备东莞网站建设,东莞市长安镇网站制作优化,自己做seo网站推广,中国制造网外贸平台怎么注册欢迎来观看温柔了岁月.c的博客 目前 设有C学习专栏 C语言项目专栏 数据结构与算法专栏 目前主要更新C学习专栏#xff0c;C语言项目专栏不定时更新 待C专栏完毕#xff0c;会陆续更新C项目专栏和数据结构与算法专栏 一周主要三更#xff0c;星期三#xff0c;星期五#x… 欢迎来观看温柔了岁月.c的博客 目前 设有C学习专栏 C语言项目专栏 数据结构与算法专栏 目前主要更新C学习专栏C语言项目专栏不定时更新 待C专栏完毕会陆续更新C项目专栏和数据结构与算法专栏 一周主要三更星期三星期五星期天 感谢大家的支持 友元函数与友元类C友元什么是友元友元函数以另一个类的成员函数为友元了解即可友元类互为友元类了解即可C友元
什么是友元 C友元是用friend关键字修饰的函数或者类 2.友元的作用用来打破类的封装忽视权限的限定 3.友元并不是说直接访问数据成员友元只是提供一个场所赋予对象具有打破权限限定的能力。 4.友元函数和友元类不属于当前类实现函数或者类不需要类名来限定 友元函数
#includeiostream
#includestringusing namespace std;class MM
{
public:MM() default; //允许存在无参的函数MM(int age, string name) :age(age), name(name) {}void printDate(){cout age age name name endl;}friend void visitDate(MM object); //友元函数 在类内用friend修饰private:int age;string name;};//可以类外实现也可以类内实现一般是类外实现
//类外实现不需要加类名进行限定这也是与函数类外实现的区别
//注意任何数据的访问都需要通过对象友元只是赋予对象打破权限限定的权限
void visitDate(MM object){cout object.name endl; //函数传参访问MM* pmm new MM(10, ni); //new创建对象访问pmm-name ni;MM mm; // 默认构造构造无参函数访问mm.age 10;MM mm(10, 温柔了岁月); // 成员函数访问cout mm.age mm.name endl; }int main()
{system(pause);return 0;
}
以另一个类的成员函数为友元了解即可 以类A的成员函数在类B中实现友元 一般都不这样写了解即可 #includeiostream
#includestringusing namespace std;class A
{
public:void printA(A object);private:int age;string name;
};class B
{
public:friend void A::printA(A object); //加类名限定private:int age;string name;
};void A::printA(A object)
{cout object.age endl;
}int main()
{system(pause);return 0;
}友元类 用friend 修饰一个类 //友元类
#includeiostream
#includestringusing namespace std;class boy
{
public:boy(string name, int age);friend class girl; //友元类
private:int age;string name;
};//在girl类中无视boy类中的权限什么都可以访问
class girl
{
public:void printDate(boy object){object.age 10;cout age endl;}void printFate(boy object){boy* p new boy(ni, 19);cout p-age p-name endl;}
private:int age;
};
int main()
{system(pause);return 0;
}互为友元类了解即可 了解即可一般不会这么写 //互为友元类#includeiostream
#includestringusing namespace std;class A
{
public:friend class B;
private:int age;string name;
};class B
{
public:friend class A;
private:int age;string name;
};int main()
{system(pause);return 0;
}