#include < iostream > using namespace std; class samp { int a; protected: int b; public: int c; samp(int n, int m){ a = n; b = m; } int geta() { return a; } int getb() { return b; } }; int main() { samp ob(10, 20); ob.c = 30; cout << ob.geta() << ' '; cout << ob.getb() << ' ' << ob.c << '\n'; return 0; }
Category: C++
基本クラスのアクセス制御
#include < iostream > using namespace std; class base { int x; public: void setx(int n){ x = n; } void showx() { cout << x << '\n'; } }; class derived : public base { int y; public: void sety(int n){ y = n; } void showy() { cout << y << '\n'; } }; int main() { derived ob; ob.setx(10); ob.sety(20); ob.showx(); ob.showy(); return 0; }
+演算子のオーバーロード
#include < iostream > using namespace std; class coord { int x, y; public: coord() { x=0; y=0; } coord(int i, int j){ x=i; y=j; } void get_xy(int &i, int &j){ i=x; j=y; } coord operator+(coord ob2); coord operator+(int i); }; coord coord::operator+(coord ob2) { coord temp; temp.x = x + ob2.x; temp.y = y + ob2.y; return temp; } coord coord::operator+(int i) { coord temp; temp.x = x + i; temp.y = y + i; return temp; } int main() { coord o1(10, 10), o2(5, 3), o3; int x, y; o3 = o1 + o2; o3.get_xy(x, y); cout << "(o1+o2) x: " << x << ", Y: " << y << "\n"; o3 = o1 + 100; o3.get_xy(x, y); cout << "(o1+100) x: " << x << ", Y: " << y << "\n"; return 0; }
コンストラクタ関数にデフォルト引数
#include < iostream > using namespace std; class myclass { int x; public: myclass(int n = 0){ x = n; } int getx() { return x; } }; int main() { myclass o1(10); myclass o2; cout << "o1: " << o1.getx() << '\n'; cout << "o2: " << o2.getx() << '\n'; return 0; }
参照 swap
#include < iostream > using namespace std; void swapargs(int &x, int &y); int main() { int i, j; i = 10; j = 19; cout << "i: " << i << ", "; cout << "j: " << j << "\n"; swapargs(i, j); cout << "after exchange: "; cout << "i: " << i << ", "; cout << "j: " << j << "\n"; return 0; } void swapargs(int &x, int &y) { int t; t = x; x = y; y = t; }
整数の配列の割り当て
#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; }
コンストラクタに複数の引数
#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; }