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-


分享到:


相關文章: