C++有元函数用法及代码演示
来源:互联网 发布:七天优品:网络骗局多 编辑:程序博客网 时间:2024/05/16 11:23
A:有元函数是普通函数
B:有元函数为类中的成员函数
C:有元类
下面一一介绍。
A:有元函数是普通函数
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
/**********************************************************************
*普通函数作为有元函数
************************************************************************/
using namespace std;
class XFZ{
public:
XFZ(int A):a(A){}
//friend关键字后面要接有元函数的类型 这里为void类型
friend void Friend(XFZ a);//有元函数一定要有参数,参数类型为所在的类,此为XFZ类,即为XFZ a
void print();
private:
int a;
};
void XFZ::print()
{
printf("消费者的数值为%d\n",a);//print函数是在类中,所以可以操纵类中的私有数据
}
void Friend(XFZ N)
{
N.a = 9;//有元函数可以操控类中的私有数据,这是普通函数不能做到的
printf("消费者的数值改为%d\n",N.a);
}
void main()
{
XFZ test(2);
test.print();
Friend(test);
}
B:有元函数为类中的成员函数
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
/**********************************************************************
*XFZ类中的成员函数为SCZ类中的有元函数
************************************************************************/
using namespace std;
class SCZ;//此处不能省略,一旦省略就会报错,声明SCZ类
class XFZ{
public:
void Friend(SCZ&);
void print();
};
class SCZ{
public:
SCZ(int a):a(a){}
void print();
void p();
friend void XFZ::Friend(SCZ&);//有元函数
private:
int a;
};
void SCZ::print()
{
printf("我是生产者\n");
}
void XFZ::print()
{
printf("我是消费者\n");
}
void XFZ::Friend(SCZ& A)
{
A.a = 9;
//printf()
}
void SCZ::p()
{
printf("生产者的数值是%d\n",a);
}
void main()
{
SCZ test(2);
XFZ test1;
test.print();
test1.print();
test1.Friend(test);
test.p();
}
C:有元类
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
/**********************************************************************
*XFZ类为SCZ类中的有元类
************************************************************************/
using namespace std;
class SCZ;//此处不能省略,一旦省略就会报错,声明SCZ类
class XFZ{
public:
void Friend(SCZ&);
void print();
void xriend(SCZ&);
};
class SCZ{
public:
SCZ(int a):a(a){}
void print();
friend XFZ;//有元函数
private:
int a;
};
void SCZ::print()
{
printf("我是生产者\n");
}
void XFZ::print()
{
printf("我是消费者\n");
}
void XFZ::Friend(SCZ& A)//有元类中的函数都为有元函数,所以都可以访问私有数据
{
A.a = 9;
printf("生产者的值改为%d\n",A.a);
}
void XFZ::xriend(SCZ& B)
{
B.a = 10;
printf("生产者的值改为%d\n",B.a);
}
void main()
{
SCZ test(2);
XFZ test1;
test.print();
test1.print();
test1.Friend(test);
test1.xriend(test);
}
- C++有元函数用法及代码演示
- C语言中常用的文件操作函数总结及使用方法演示代码
- 让你提前认识软件开发(18):C语言中常用的文件操作函数总结及使用方法演示代码
- 聚合函数代码演示
- C++:构造函数,析构函数及友元函数
- 友元函数用法
- Floyd算法及代码演示
- c/c++ 友元函数友元类,及const作用
- C语言位操做符代码演示
- 二叉树演示C代码
- mysql函数大全及演示
- [c++]友元函数
- 【C++】友元函数
- c++:友元函数
- C++:友元函数
- 【C++】友元函数
- 有元函数自我总结
- C++sort()函数的用法 及学习
- DNF的命令使用教学
- JavaScript基本入门教程
- 分页查询
- Activity面试详解
- keil C51脚本编译
- C++有元函数用法及代码演示
- 删除设备和驱动器中的图标
- 机器学习基石系列二
- 剑指offer 面试题35扩展:从第一个字符串中删除第二个字符串中的所有字符 (C++版)
- 《机器学习实战》和Udacity的ML学习笔记之线性回归
- PHP中数组转JSon和JSon转数组的实现
- 游标
- SVN项目文件中各小图标的含义
- 数据结构: 链表