友员函数和友员类

#include<iostream>

using namespace std;

class Test2//注意友员类的定义放在Test1的之上!!

{

friend class Test1;//Test1想直接访问Test2的private参数,所以声明为我是你的朋友!

public:

Test2(int a, int b){ x = a; y = b; }

int getx(){

return x;

}

int gety(){

return y;

}

private:

int x, y;

};

class Test1{

public:

Test1(int a, int b) :t(a, b){}

void print(){ cout << "Test2 的对象t的x:" << t.x << endl; }

private:

Test2 t;//因为Test2是Test1的友员

};

class Test3{

public:

friend int getTx(Test3 & t3);//友员函数通过类的指针或引用访问这个类对象的私有成员

private:

//friend int getTx(Test3 & t3);//放在这里完全一样,访问限制符对友员函数不管用

int x;

};

int getTx(Test3 & t3){//友员函数在类外定义!不加static防止给别的混淆

return t3.x;//友员函数可以使用类的所有函数

}

int main(){

Test1 t1(2,5);

t1.print();

system("pause");

return 0;

}

时间: 2024-11-10 13:09:08

友员函数和友员类的相关文章

模板类的友员函数

#include<iostream> using namespace std; template<class T> class Complex{ public: Complex(T a, T b); void setComplex(T a,T b); friend Complex<T> operator+(const Complex<T> &c1, const Complex<T> &c2){ //对于模板类的友员函数一定要写在类

第六周项目4-成员函数、友元函数和一般函数有区别

(1)阅读下面的程序,体会注释中的说明. //例:使用成员函数.友元函数和一般函数的区别 #include <iostream> using namespace std; class Time { public: Time(int h,int m,int s):hour(h),minute(m),sec(s) {} void display1(); //display1是成员函数 friend void display2(Time &); //display2是友元函数 int get

黑马程序员 ——ios点语法和类的三大特性

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 一.点语法 (一)认识点语法

黑马程序员——19,Collections工具类,Arrays工具类,高级for循环,可变参数,静态导入

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序员--19,Collections工具类,Arrays工具类 /* Collections是一个类,注意,这里后面带有一个s 千万不要和Collection弄混了!Collection只是接口而已. 两者要区别开来. Collect

漫谈程序员系列:程序员的生活就这样吗

我当了快十年程序员了,终于老得可以来谈谈程序员的生活是什么样子了. 或许陈奕迅的<十年>中的一段歌词,可以表示很多程序员和软件开发之间的感情纠葛: " 十年之前 我不认识你 你不属于我 我们还是一样 陪在一个陌生人左右 走过渐渐熟悉的街头 十年之后 我们是朋友 还可以问候 只是那种温柔 再也找不到拥抱的理由 情人最后难免沦为朋友 怀抱既然不能逗留 何不在离开的时候 一边享受 一边泪流 " 这首歌的词作者是林夕,香港才子.林夕的歌词写得真不错,我还因为这个在 13 年时买了他

第1次作业:这是一个不想当程序员的未来程序员

前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法.... 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一志愿,而是第三志愿,我第一二志愿分别是会计和金融,不过现在看来其实我的兴趣也不在这几个方面,有句话说得好,三分靠高考,七分靠志愿.志愿填的好,将来烦恼会少很多.经过两年的学习,我发现当初我就不应该考虑就业前景而填报专业,而是应该结合自己的兴趣爱好来,即使这份兴趣爱好所对应的专业将来并不好找到工作

软件测试员比软件开发员

知乎上有一篇文章: 软件测试员比软件开发员要求低些吗? http://www.zhihu.com/question/20156659 其中有段回答: “ 陈甫鸼,生长于闽,求学入秦,漂泊适燕,实秦人也. 聊天.莫双.iamhaha 等人赞同 现实地说,我得承认@pansz 的看法很有代表性.我所知的很多公司的看法都是这样.但这不是我认同的看法.水平差点可以做测试,实际上就是把测试部门当作垃圾收容所.但是实际上说这些话的人,我相信并不理解测试究竟是什么. 如果我们不打算做深入的分析,其实要驳倒这个

c++ 调用pthread_create函数时,传入类中的成员报错。解决方法。

1.问题出现 我想把我的c程序转成c++的方式写,因为我觉得c++的面向对象方式特别的好用. 然后我开始移植了,当我想把在一个类函数中调用pthread_create来创建一个类. 我给的参数是 s=pthread_create(&id,NULL,run,NULL); //函数原型 void * THREAD_433::run(void *arg) { void * ret; using namespace std; cout<<"hello!\r\n"; retu

你是普通程序员、文艺程序员还是2B程序员?

求2的32次方 普通程序员 Java code ? 1System.out.println(Math.pow(2, 32)); 文艺程序员 Java code ? 1System.out.println(1L<<32); 2B程序员 Java code ? 1System.out.println(2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2); 交换两个数 普通程序员 Java code ? 1 2 3 4 5 6