栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 基础知识-类和对象-友元

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 基础知识-类和对象-友元

c++ 基础知识-类和对象-友元 1.全局函数做友元
#include   
#include   
using namespace std;

class Person
{
	//利用friend修饰函数构造友元函数,可以访问类内私有成员 
	friend void test(Person * p);
public:
	void fun()
	{
		m_age = 25;
		m_ID = 123;
		cout<<"fun()"<
	cout<m_ID<m_age<
	Person  p;
    p.fun();
	test(&p);
	return 0;
}  
2.友元类
#include   
#include   
using namespace std;

class Person
{
	//声明友元
	friend class Student;

public:
	//构造函数
	Person();
	//析构函数
	~Person();
public:
	int m_age;

private:
	int m_ID;
};

Person::Person()
{
	this->m_age = 1;//有无this都可以
	this->m_ID = 123456;//有无this都可以
}

Person::~Person()
{
	cout<<"Person() : 析构函数"<
	//friend class Person;
public:
	//构造函数
	Student();
	~Student();
	void visit();

private:
	Person * person;
};

Student::Student()
{
	person = new Person;//
	
}

Student::~Student()
{
	cout<<"Student() : 析构函数"<
	cout<m_age<m_ID<
	//Person p;
	Student s;
	s.visit();
}

int main()
{
	//特别注意这种调用方式,类和调用都写在main函数外面,main内部只写一些简单的
	fun();
	return 0;
}  
3.成员函数做友元 注意访问顺序
#include   
#include   
using namespace std;

class Person;//注意先声明Person

class Student
{
	//friend class Person;
public:
	//构造函数
	Student();
	~Student();
	void visit();

private:
	Person * person;
};

class Person
{
	//声明友元类
	//friend class Student;
	friend void Student::visit();

public:
	//构造函数
	Person();
	~Person();
public:
	int m_age;

private:
	int m_ID;
};

Person::Person()
{
	this->m_age = 1;
	this->m_ID = 123456;
}
Person::~Person()
{
	cout<<"Person() : 析构函数"<
	person = new Person;//
}

Student::~Student()
{
	cout<<"Student() : 析构函数"<
	cout<m_age<m_ID<
	//Person p;
	Student s;
	s.visit();
}

int main()
{
	//特别注意这种调用方式,类和调用都写在main函数外面,main内部只写一些简单的
	fun();
	return 0;
}  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/916950.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号