#include < iostream > using namespace std; int main() { int *p; p = new int [5]; if(!p) { cout << "memory set error\n"; return 1; } int i; for(i=0; i<5; i++) p[i] = i; for(i=0; i<5; i++){ cout << "integer type p[" << i << "]is: "; cout << p[i] << "\n"; } delete [] p; return 0; }
整数に動的にメモリ割り当て
#include < iostream > using namespace std; int main() { int *p; p = new int(9); if(!p) { cout << "memory set error\n"; return 1; } cout << "p set integer is: " << *p << "\n"; delete p; return 0; }
オブジェクトを動的に割り当て
#includeusing namespace std; class samp { int i, j; public: void set_ij(int a, int b){ i=a; j=b; } int get_product() { return i*j; } }; int main() { samp *p; p = new samp; if(!p){ cout << "memory set error\n"; return 1; } p->set_ij(4, 5); cout << "multiply is :" << p->get_product() << "\n"; delete p; return 0; }
newとdelete
#include < iostream > using namespace std; int main() { int *p; p = new int; if(!p) { cout << "memory set error\n"; return 1; } *p = 1000; cout << "p point integer is: " << *p << "\n"; delete p; return 0; }
thisポインタ
メンバ関数から同じクラスのほかのメンバを参照する際には、直接参照することができる。
#include < iostream > #include < cstring > using namespace std; class inventory { char item[20]; double cost; int on_hand; public: inventory(char *i, double c, int o) { strcpy(item, i); cost = c; on_hand = o; } void show(); }; void inventory::show() { cout << item; cout << ": $" << cost; cout << " stock: " << on_hand << "\n"; } int main() { inventory ob("rench", 4.95, 4); ob.show(); return 0; }
コンストラクタに複数の引数
#include < iostream > using namespace std; class samp { int a, b; public: samp(int n, int m){ a = n; b = m; } int get_a() { return a; } int get_b() { return b; } }; int main() { samp ob[4][2] = { samp(1, 2), samp(3, 4), samp(5, 6), samp(7, 8), samp(9, 10), samp(11, 12), samp(13, 14), samp(15, 16) }; int i; for(i = 0; i<4; i++){ cout << ob[i][0].get_a() << ' '; cout << ob[i][0].get_b() << "\n"; cout << ob[i][1].get_a() << ' '; cout << ob[i][1].get_b() << "\n"; } cout << "\n"; return 0; }
オブジェクトの多次元配列
#include < iostream > using namespace std; class samp { int a; public: samp(int n){ a = n; } int get_a() { return a; } }; int main() { samp ob[4][2] = { 1, 2, 3, 4, 5, 6, 7, 8 }; int i; for (i=0; i<4; i++){ cout << ob[i][0].get_a() << ' '; cout << ob[i][1].get_a() << "\n"; } cout << "\n"; return 0; }
オブジェクトの配列の初期化
#includeusing namespace std; class samp { int a; public: samp(int n){ a = n; } int get_a() { return a; } }; int main() { samp ob[4] = { -1, -2, -3, -4 }; int i; for(i=0; i<4; i++) cout << ob[i].get_a() << ' '; cout << "\n"; return 0; }
オブジェクトの配列
オブジェクトは変数であり、他の型の変数と同じ機能と属性を持っています。
#include < iostream > using namespace std; class samp { int a; public: void set_a(int n) { a = n; } int get_a() { return a; } }; int main() { samp ob[4]; int i; for(i=0; i<4; i++) ob[i].set_a(i); for(i=0; i<4; i++) cout << ob[i].get_a(); cout << "\n"; return 0; }
フレンド関数
二つの異なる型のクラスが共通の特性を持っているとき、それを比較する。
#include < iostream > using namespace std; class truck; class car { int passengers; int speed; public: car(int p, int s){ passengers = p; speed = s; } friend int sp_greater(car c, truck t); }; class truck { int weight; int speed; public: truck(int w, int s){ weight = w, speed = s; } friend int sp_greater(car c, truck t); }; int sp_greater(car c, truck t) { return c.speed - t.speed; } int main() { int t; car c1(6, 55), c2(2, 120); truck t1(10000, 55), t2(20000, 72); cout << "c1 and t1 compare:\n"; t = sp_greater(c1, t1); if(t<0) cout << "truck is faster\n"; else if(t==0) cout << "car and truck speed is same\n"; else cout << "car is faster\n"; cout << "\nc2 and t2 compare:\n"; t = sp_greater(c2, t2); if(t<0) cout << "truck is faster\n"; else if(t==0) cout << "car and truck speed is same\n"; else cout << "car is faster\n"; return 0; }