友元函数和友元类:
/*
实现类之间的数据共享,减少系统开销,提高效率,是的其它类能直接访问该类的私有成员
友元破坏了封装机制,尽量避免使用
*/
#include <iostream>
#include <string>
#include <memory>
using namespace std;
class friend_test;
class test
{
public:
test() {}
~test() {}
friend void fun(std::shared_ptr<test> obj);
private:
string name_ = "test";
friend class friend_test;
};
class friend_test
{
public:
void func(std::shared_ptr<test> obj)
{
std::cout << "friend test print test name is " << obj->name_ << std::endl;
}
};
void fun(std::shared_ptr<test> obj)
{
cout << "test name is " << obj->name_ << std::endl;
}
int main()
{
std::shared_ptr<test> t = std::make_shared<test>();
fun(t);
friend_test tt;
tt.func(t);
}