//空指针访问成员函数
友元-http://c.biancheng.net/view/2233.html
.全局函数做友元
.类做友元
.成员函数做友元
#include <iostream>
using namespace std;
class Student{
public:
Student(char *name, int age, float score);
public:
friend void show(Student *pstu); //将show()声明为友元函数
private:
char *m_name;
int m_age;
float m_score;
};
Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
//非成员函数
void show(Student *pstu){
cout<<pstu->m_name<<"的年龄是 "<<pstu->m_age<<",成绩是 "<<pstu->m_score<<endl;
}
int main(){
Student stu("小明", 15, 90.6);
show(&stu); //调用友元函数
Student *pstu = new Student("李磊", 16, 80.5);
show(pstu); //调用友元函数
return 0;
}
友元-全局函数做友元
-
#include <iostream> #include<string> using namespace std; class Person { public: Person() { m_settingroom="客厅"; m_room="卧室"; } public: string m_settingroom; private: string m_room; }; //全局函数 void Goodgey(Person *person) { cout<<"好朋友正在访问"<<" "<<person->m_settingroom<<endl; } void test01() { Person person; Goodgey(&person); } //void Goodgey(Person &person) { cout<<"好朋友正在访问"<<" "<<person.m_settingroom<<endl; } void test01() { Person person; Goodgey(person); }//指针和引用两种访问方式,调用时使用方式不同 int main() { test01(); return 0; }
#include <iostream>
#include<string>
using namespace std;
class Person
{
friend void Goodgey(Person &person);//友元函数的定义
public:
Person()
{
m_settingroom="客厅";
m_room="卧室";
}
public:
string m_settingroom;
private:
string m_room;
};
//全局函数
void Goodgey(Person &per)
{
cout<<"好朋友正在访问"<<" "<<per.m_settingroom<<endl;
cout<<"好朋友正在访问"<<" "<<per.m_room<<endl;
}
void test01()
{
Person per;
Goodgey(per);
}
int main()
{
test01();
return 0;
}
#include <iostream>
using namespace std;
class Building;
class Goodgey
{
public:
Goodgey();
void visit01();
void visit02();
Building *building;
};
class Building
{
public:
Building();
friend void Goodgey::visit02();
public:
string m_sittingroom;
private:
string m_Bedroom;
};
Building::Building()
{
m_sittingroom="客厅";
m_Bedroom="卧室";
}
void Goodgey::visit01()
{
cout<<building->m_sittingroom<<endl;
}
void Goodgey::visit02()
{
cout<<building->m_sittingroom<<endl;
cout<<building->m_Bedroom<<endl;
}
Goodgey::Goodgey()
{
building=new Building;
}
int main()
{
Goodgey gg;
gg.visit01();
gg.visit02();
return 0;
}