-- TOC --
C++对象中存在private数据,对象之外的函数是无法访问的,但是friend可以,俗称友元。友元可以是全局函数接口,某一个class,或者某个class中的成员函数。
测试代码如下:
#include <iostream>
#include <string>
using namespace std;
class car;
struct rich {
void show_car(car& a);
};
class car {
friend void show_car(car&);
friend struct xyz;
friend void rich::show_car(car&);
int speed;
string vendor;
public:
car(int sp, string vd):
speed{sp},
vendor{vd} {
}
};
void show_car(car& a) {
cout << a.vendor << " " << a.speed << endl;
}
struct xyz {
void show_car(car& a) {
cout << a.vendor << " " << a.speed << endl;
}
};
void rich::show_car(car& a) {
cout << a.vendor << " " << a.speed << endl;
}
int main(void) {
car tesla{100, "telsa"};
show_car(tesla);
xyz z;
z.show_car(tesla);
rich me;
me.show_car(tesla);
return 0;
}
代码编译运行OK。
class中的成员默认都是private,与struct正好相反。(理解C++的public,protected和private)
本文链接:https://cs.pynote.net/sf/c/cpp/202209291/
-- EOF --
-- MORE --