友元函数
类的私有数据成员只能被类本身的成员函数访问。然而,这也有一个例外,这个类的友元函数也能访问这个类的私有数据成员.
#include <iostream>
using namespace std;
class Rectangle {
int width, height;
public:
Rectangle(int w = 1, int h = 1):width(w),height(h){}
friend void display(Rectangle &);
};
void display(Rectangle &r) {
cout << r.width * r.height << endl;
}
int main () {
Rectangle rect(5,10);
display(rect);
return 0;
}
友元函数总结:
友元函数不能是任何类的成员函数,但友元函数能访问友元关系类的私有数据成员
因为友元函数不能是任何类的数据成员,所以不能通过点操作符来调用
友元类
就向友元函数一样我们也可以有一个友元类,这个友元类能访问有友元关系类的其它私有数据成员。
#include <iostream>
using namespace std;
class Square;
class Rectangle {
int width, height;
public:
Rectangle(int w = 1, int h = 1):width(w),height(h){}
void display() {
cout << "Rectangle: " << width * height << endl;
};
void morph(Square &);
};
class Square {
int side;
public:
Square(int s = 1):side(s){}
void display() {
cout << "Square: " << side * side << endl;
};
friend class Rectangle;
};
void Rectangle::morph(Square &s) {
width = s.side;
height = s.side;
}
int main () {
Rectangle rec(5,10);
Square sq(5);
cout << "Before:" << endl;
rec.display();
sq.display();
rec.morph(sq);
cout << "\nAfter:" << endl;
rec.display();
sq.display();
return 0;
}
分享到:
相关推荐
本文档详细介绍了C++友元函数及友元类,方便大家对比学习
友元函数和友元类的需要:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又...
友元函数,类外普通函数声明为类的友元,之后即可与类共享数据
C++友元函数的使用,这个友元函数是另一个类的成员函数
关于c+模板之友元类友元函数的实例化,图形界面之矩形。
C++友元函数和友元类的学习心得[归纳].pdf
c++ demo,重载运算符,友元函数的实现
日期类Date包含日期的年、月、日三个数数据成员,编写一个友元函数,求两个日期之间相差的天数; 重要的是理顺:这个函数不是Date类的成员函数
主要讲解c++种的友元类友元函数 可以更好地学习其中的内容 友元在类中担任着十分关键的角色 所以更应该认真学习
(1)友元函数是定义在一个类外的普通函数。 友元函数和普通函数的定义一样;在类内必须将该普通函数声明为友元。 (2)友元函数不是成员函数。 不能通过对象来调用,而是直接调用;友元函数可以访问类的公有、受保护以及...
友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有...
友元函数是一种特殊的函数,它必须要在类中进行声明,但其本身并不是类的成员函数,但友元函数可以访问类的私有成员变量。 友元函数的好处: 1、实现类之间的数据共享 2、提高程序运行效率,方便编程 友元函数的坏处...
友元函数友元类 二、友元函数友元函数在类作用域外定义,但它需要在类体中进行说明为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下: friend 类型 友元函数名(参数表);友元的...
② 首先,采用友元函数distance()的方式实现友元接口;其次,采用友元成员distance()的方式实现友元接口;最后,尝试采用友元类的方式实现友元接口。 ③ 对于友元成员和友元类两种实现方式,可以另外定义一个求解两...
C++静态成员、友元函数、类模板实验,共3个任务
我们知道,基类的private成员在派生类中不能被访问。那么,友元函数能否继承。(举例说明)
(1) 定义一个Boat和Car两个类,他们都具有私用属性--重量; (2)编写一个函数,计算两者的重量和。
C++运算符重载函数作为类成员函数和友元函数.doc
写的很好的c++PPT