C\C++|结构体封装数组、函数指针、结构体指针、结构体变量

我们说封装,其实不单只是将数据和操作数据的函数封装成类类型,也可以是函数封装数据和代码、结构体封装数组、结构体模仿“面向对象”思想封装函数指针、结构体指针和结构体变量。

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-


分享到:


相關文章: