練習用です。いろんなものがごちゃまぜです。
(empty log message)
| @@ -8,9 +8,10 @@ | ||
| 8 | 8 | int len; |
| 9 | 9 | public: |
| 10 | 10 | strtype(char *ptr); |
| 11 | + strtype(const strtype &s); | |
| 11 | 12 | ~strtype(); |
| 12 | - void show(); | |
| 13 | - friend char *get_string(strtype *s); | |
| 13 | + char *get(){return p;} | |
| 14 | + int getlen(){return len;} | |
| 14 | 15 | }; |
| 15 | 16 | |
| 16 | 17 | strtype::strtype(char *ptr) |
| @@ -26,6 +27,17 @@ | ||
| 26 | 27 | this->len = l; |
| 27 | 28 | } |
| 28 | 29 | |
| 30 | +strtype::strtype(const strtype &s) | |
| 31 | +{ | |
| 32 | + len = s.len; | |
| 33 | + p = new char[len]; | |
| 34 | + if (!p){ | |
| 35 | + cout << "メモリ割り当てエラー"; | |
| 36 | + exit(1); | |
| 37 | + } | |
| 38 | + strncpy(p, s.p,len); | |
| 39 | +} | |
| 40 | + | |
| 29 | 41 | strtype::~strtype() |
| 30 | 42 | { |
| 31 | 43 | cout << "pを解放する。\n"; |
| @@ -32,23 +44,16 @@ | ||
| 32 | 44 | delete p; |
| 33 | 45 | } |
| 34 | 46 | |
| 35 | -char *get_string(strtype *s) | |
| 47 | +void show(strtype x) | |
| 36 | 48 | { |
| 37 | - return s->p; | |
| 49 | + cout << x.get() << "-長さ:" << x.getlen() << "\n"; | |
| 38 | 50 | } |
| 39 | 51 | |
| 40 | -void strtype::show() | |
| 41 | -{ | |
| 42 | - cout << p << "-長さ:" << len << "\n"; | |
| 43 | -} | |
| 44 | - | |
| 45 | 52 | int main() |
| 46 | 53 | { |
| 47 | 54 | strtype s1("This is a test."), s2("I like C++."); |
| 48 | - s1.show(); | |
| 49 | - s2.show(); | |
| 50 | - cout << get_string(&s1) << "\n"; | |
| 51 | - cout << get_string(&s2) << "\n"; | |
| 55 | + show(s1); | |
| 56 | + show(s2); | |
| 52 | 57 | |
| 53 | 58 | return 0; |
| 54 | 59 | } |
| \ No newline at end of file |
| @@ -1,10 +1,13 @@ | ||
| 1 | 1 | #include <iostream> |
| 2 | 2 | #include <cstdio> |
| 3 | +#include <time.h> | |
| 4 | + | |
| 3 | 5 | using namespace std; |
| 4 | 6 | |
| 5 | 7 | class date { |
| 6 | 8 | int day, month , year; |
| 7 | 9 | public: |
| 10 | + date(time_t t); | |
| 8 | 11 | date(char *str); |
| 9 | 12 | date(int m,int d, int y){ |
| 10 | 13 | day = d; |
| @@ -20,14 +23,23 @@ | ||
| 20 | 23 | { |
| 21 | 24 | sscanf(str, "%d%*c%d%*c%d", &month, &day, &year); |
| 22 | 25 | } |
| 23 | - | |
| 26 | +date::date(time_t t) | |
| 27 | +{ | |
| 28 | + struct tm *ptml; | |
| 29 | + ptml = localtime(&t); | |
| 30 | + day = ptml->tm_mday; | |
| 31 | + month = ptml->tm_mon + 1; | |
| 32 | + year = ptml->tm_year + 1900; | |
| 33 | +} | |
| 24 | 34 | int main() |
| 25 | 35 | { |
| 26 | 36 | date sdate("12/31/99"); |
| 27 | 37 | date idate(12,31,99); |
| 38 | + date ndate(time(NULL)); | |
| 28 | 39 | |
| 29 | 40 | sdate.show(); |
| 30 | 41 | idate.show(); |
| 42 | + ndate.show(); | |
| 31 | 43 | |
| 32 | 44 | return 0; |
| 33 | 45 | } |
| \ No newline at end of file |
| @@ -4,51 +4,50 @@ | ||
| 4 | 4 | |
| 5 | 5 | class arrays { |
| 6 | 6 | int size; |
| 7 | - char *p; | |
| 7 | + int *p; | |
| 8 | 8 | public: |
| 9 | - arrays(int num); | |
| 9 | + arrays(int sz){ | |
| 10 | + p = new int[sz]; | |
| 11 | + if(!p) exit(1); | |
| 12 | + size = sz; | |
| 13 | + cout << "通常のコンストラクタを使う。\n"; | |
| 14 | + } | |
| 10 | 15 | ~arrays(){delete [] p;} |
| 11 | - char &put(int i); | |
| 12 | - char get(int i); | |
| 13 | -}; | |
| 14 | - | |
| 15 | -arrays::arrays(int num) | |
| 16 | -{ | |
| 17 | - p = new char[num]; | |
| 18 | - if(!p){ | |
| 19 | - cout << "メモリ割り当てエラー\n"; | |
| 20 | - exit(1); | |
| 16 | + arrays(const arrays &a); | |
| 17 | + void put(int i,int j){ | |
| 18 | + if (i >=0 && i < size) p[i] = j; | |
| 21 | 19 | } |
| 22 | - size = num; | |
| 23 | -} | |
| 24 | -char &arrays::put(int i) | |
| 25 | -{ | |
| 26 | - if(i < 0 || i >size-1){ | |
| 27 | - cout << "境界エラー!!!\n"; | |
| 28 | - exit(1); | |
| 20 | + int get(int i){ | |
| 21 | + return p[i]; | |
| 29 | 22 | } |
| 30 | - return p[i]; | |
| 31 | -} | |
| 23 | +}; | |
| 32 | 24 | |
| 33 | -char arrays::get(int i) | |
| 25 | +arrays::arrays(const arrays &a) | |
| 34 | 26 | { |
| 35 | - if(i < 0 || i > size-1){ | |
| 36 | - cout << "境界エラー!!!\n"; | |
| 37 | - exit(1); | |
| 27 | + size = a.size; | |
| 28 | + p = new int[a.size]; | |
| 29 | + if(!p)exit(1); | |
| 30 | + for(int i = 0;i < a.size; i++){ | |
| 31 | + p[i] = a.p[i]; | |
| 38 | 32 | } |
| 39 | - return p[i]; | |
| 33 | + cout << "コピーコンストラクタを使う。\n"; | |
| 40 | 34 | } |
| 41 | 35 | |
| 42 | 36 | int main() |
| 43 | 37 | { |
| 44 | - arrays a(10); | |
| 45 | - a.put(3) = 'x'; | |
| 46 | - a.put(2) = 'R'; | |
| 47 | - | |
| 48 | - cout << a.get(3) << a.get(2); | |
| 38 | + arrays num(10); | |
| 39 | + for(int i = 0; i < 10; i++){ | |
| 40 | + num.put(i, i); | |
| 41 | + } | |
| 42 | + for(int i = 0; i < 10; i++){ | |
| 43 | + cout << num.get(i) << ' '; | |
| 44 | + } | |
| 49 | 45 | cout << "\n"; |
| 46 | + arrays x = num; | |
| 47 | + for(int i = 0; i < 10; i++){ | |
| 48 | + cout << x.get(i) << ' '; | |
| 49 | + } | |
| 50 | + cout << "\n"; | |
| 50 | 51 | |
| 51 | - a.put(11) = 'l'; | |
| 52 | - | |
| 53 | 52 | return 0; |
| 54 | 53 | } |
| \ No newline at end of file |