我们说封装,其实不单只是将数据和操作数据的函数封装成类类型,也可以是函数封装数据和代码、结构体封装数组、结构体模仿“面向对象”思想封装函数指针、结构体指针和结构体变量。
1 结构体封装数组
#include <iostream>
using namespace std;
struct _arrInStruct{
....char arr[7];
}a,b={"abcdef"};
int f(struct _arrInStruct arr) // 如果是裸数组,数组名会兑化为指针
{
....return sizeof(arr);//如果是裸数组,只能返回指针的长度
}
int main()
{
....a=b; // 数组不能整体赋值,因为数组名已兑化为指针,结构体可以
....cout<
....system("pause");
....return 0;
}
// size of abcdef is 7
2 结构体模仿面向对象思维实现封装、私有化、继承和多态
2.1 结构体封装函数指针:实现面向对象的封装概念
struct _Data;
typedef void (*process)(struct _Data* pData);
typedef struct _Data
{
....int value;
....process pProcess;
}Data;
2.2 结构体封装结构体指针:实现面向对象的私有概念
typedef struct _data
{
....int m_data;
} * pdata;
typedef struct _Child
{
....pdata pd;
....int data_child;
}Child;
2.3 结构体封装结构体变量:实现面向对象的继承概念
typedef struct _parent
{
....int data_parent;
}Parent;
typedef struct _Child
{
....struct _parent parent;
....int data_child;
}Child;
2.4 结构体封装函数指针:实现面向对象的多态概念
typedef struct _Play
{
....void* pData;
....void (*start_play)(struct _Play* pPlay);
}Play;
-End-
閱讀更多 小智雅匯 的文章