#include<iostream> #include<string> using namespace std; class Building; class GdGay { public: void visit(); //参观函数访问building中的属性(公共和私有) Building* b; ~GdGay() { delete b; } }; class Building { friend class GdGay; //这个类是本类的友元,可以访问私有属性 public: Building(); public: string m_SittingRoom; private: string m_BedRoom; }; //类外写成员函数,要表明作用域。。。其实没必要这么操作!!! Building::Building() //构造函数,不用写返回值类型,所以省了void { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } GdGay::GdGay() //构造函数,不用写返回值类型,所以省了void { //创建一个建筑物的对象 b = new Building; //在堆区创建一个对象,让b * 指向这个对象 } void GdGay:: visit() { cout << "好基友这个类正在访问: " << b->m_SittingRoom << endl; cout << "好基友这个类正在访问: " << b->m_BedRoom << endl; } void test01() { GdGay gg; gg.visit(); } int main() { test01(); system("pause"); return 0; }