1の#include <iostreamの> 2の#include <fstreamの> 3の#include < 文字列・H> 4 使って 名前空間STDを、 5つの 6 クラスの学生。 7 8のtypedef のボイド(CALL)(学生*、int型); 9 10 クラスの学生 11 { 12 公共: 13 文字列名; 14 int型の年齢; 15 文字のセックス。 16 公衆: 17 学生(){} 18 〜学生(){} 19 }。 20 21 空隙 write_object(スチューデント*学生、int型のサイズ) 22 { 23 ofstreamのをOFS(" text.bat " )。 24 であれば(OFS) 25 { 26 のためには、(int型 i = 0 ; iは、サイズ<; iは++ ) 27 { 28 CIN >>学生[I] .nameの>>学生[I] .age >> 学生[I] .sex。 29 ofs.write(reinterpret_castは< constの CHAR *>(&学生[i])と、はsizeof(学生[I])); 30 } 31 } 32 他の 33 { 34 COUT << " 失敗書き込み" << ENDL。 35 } 36 ofs.close()。 37 } 38 39 空隙 read_object(スチューデント*学生、int型のサイズ) 40 { 41 はifstreamのIFS(" text.bat " )。 42 であれば(IFS) 43 { 44 のために(INT I = 0;私は、サイズ<; Iは++ ) 45 { 46 ifs.read(reinterpret_castは< CHAR *>(&学生[i])と、はsizeof (学生[I]))。 47 } 48 } 49 他の 50 { 51 COUT << " 失敗書き込み" << ENDL。 52 } 53 ifs.close()。 54 } 55 56 空隙 show_students(スチューデント*学生、int型のサイズ) 57 { 58 のための(int型 I =0 ; iは、サイズ<; iは++ ) 59 { 60 COUT <<学生[I] .nameの<< " " <<学生[I] .age << " " <<学生[I] .sex << ENDL。 61 } 62 } 63 64 の#if 0 65 空隙クリア(スチューデント*学生は、int型のサイズ) 66 { 67 のために(int型 i = 0 ; iは、サイズ<; iは++ ) 68 { 69 のmemset(reinterpret_castは< ボイド *>(& 0、はsizeof (学生[I]))。 70 } 71 } 72 #endifの 73 74 のint main()の 75 { 76人の 生徒の生徒[ 3 ]。 77 INTのサイズ= はsizeof(学生)/ はsizeof(学生[ 0 ])。 78 79 CALL *配列[ 5 ] = {write_object、show_students、read_object、show_students、クリア}。 80 81 のために(int型 i = 0 ; iは< 5 ; iは++します) 82 { 83 配列[I](学生、サイズ)。 84 } 85 86 戻り 0 ; 87 }