成员函数做友元函数
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> using namespace std; //只让Visit可以作为友元函数 Visit2不可以 class House; //先声明,防止报错 class GoodGay { public: GoodGay(); //类内声明 void Visit(); //类内声明 void Visit2(); //类内声明 House * h; }; class House { friend void GoodGay::Visit(); //成员函数作为友元函数,要加上作用域 public: House(); //类内声明 string m_SittingRoom; private: string m_BedRoom; }; GoodGay::GoodGay() // 类外实现构造函数 好基友类的构造函数,创建House对象 { this->h = new House; } void GoodGay::Visit() //类外实现成员函数 注意 返回值要与声明的一致 { cout << "好基友正在访问:" << this->h->m_SittingRoom << endl; cout << "好基友正在访问:" << this->h->m_BedRoom << endl; } void GoodGay::Visit2() //类外实现成员函数 注意 返回值要与声明的一致 { cout << "好基友正在访问:" << this->h->m_SittingRoom << endl; cout << "好基友正在访问:" << this->h->m_BedRoom << endl; //error } House::House() { this->m_SittingRoom = "客厅"; this->m_BedRoom = "卧室"; } int main() { system("Pause"); //阻塞功能 return EXIT_SUCCESS; // 返回正常退出 }
只有Visit能访问私有属性