#include < iostream > #include < cstdlib > using namespace std; class base { public: int i; base(int x){ i = x; } virtual void func() { cout << "use base func(): "; cout << i << '\n'; } }; class derived1 : public base { public: derived1(int x) : base(x) {} void func() { cout << "use derived 1 func(): "; cout << i*i << '\n'; } }; class derived2 : public base { public: derived2(int x) : base(x) {} void func() { cout << "use derived2 func() : "; cout << i+i << '\n'; } }; int main() { base *p; derived1 d_ob1(10); derived2 d_ob2(10); int i, j; for(i=0; i<10; i++){ j = rand(); if((j%2)) p = &d_ob1; else p = &d_ob2; p->func(); } return 0; }
Month: May 2016
派生クラスへのポインタ
#include < iostream > using namespace std; class base { int x; public: void setx(int i){ x = i; } int getx() { return x; } }; class derived : public base { int y; public: void sety(int i){ y = i; } int gety() { return y; } }; int main() { base *p; base b_ob; derived d_ob; p = &b_ob; p->setx(10); cout << "base class object x: " << p->getx() << '\n'; p = &d_ob; p->setx(99); d_ob.sety(88); cout << "derived class object x: " << p->getx() << '\n'; cout << "derived class object y: " << d_ob.gety() << '\n'; return 0; }
write()
#include < iostream > #include < fstream > #include < cstring > using namespace std; int main() { ofstream out("test", ios::out||ios::binary); if(!out) { cout << "can not open output file\n"; return 1; } double num = 100.45; char str[] = "this is a test"; out.write((char *) &num, sizeof(double)); out.write(str, strlen(str)); out.close(); return 0; }
ディスク入出力
#include < iostream > #include < fstream > using namespace std; int main(int argc, char *argv[]) { if(argc!=2){ cout << "use: WRITE\n"; return 1; } ofstream out(argv[1]); if(!out){ cout << "cannot open input file\n"; return 1; } char str[80]; cout << "write char in disk and stop $\n"; do { cout << ": "; cin >> str; out << str << endl; } while (*str != '$'); out.close(); return 0; }
独自マニュプレーター
setup()というマニュプレータ
#include < iostream > using namespace std; ostream &setup(ostream &stream) { stream.width(10); stream.precision(4); stream.fill('*'); return stream; } int main() { cout << setup << 123.123456; 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; } friend ostream &operator<<(ostream &stream, coord ob); friend istream &operator>>(istream &stream, coord &ob); }; ostream &operator<<(ostream &stream, coord ob) { stream << ob.x << ", " << ob.y << '\n'; return stream; } istream &operator>>(istream &stream, coord &ob) { cout << "input polar: "; stream >> ob.x >> ob.y; return stream; } int main() { coord a(1, 1), b(10, 23); cout << a << b; cin >> a; cout << a; return 0; }
TCP/IPセキュリティ実験
独自挿入子の作成
#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; } friend ostream &operator<<(ostream &stream, coord ob); }; ostream &operator<<(ostream &stream, coord ob) { stream << ob.x << ", " << ob.y << '\n'; return stream; } int main() { coord a(1, 1), b(10, 23); cout << a << b; return 0; }
入出力マニュピレーター
#include < iostream > #include < iomanip > using namespace std; int main() { cout << hex << 100 << endl; cout << oct << 10 << endl; cout << setfill('x') << setw(10); cout << 100 << " hi " << endl; return 0; }
C++入出力
#include < iostream > #includeusing namespace std; int main() { double x; cout.precision(4); cout << " x sqrt(x) x^2\n\n"; for(x = 2.0; x <= 20.0; x++){ cout.width(7); cout << x << " "; cout.width(7); cout << sqrt(x) << " "; cout.width(7); cout << x*x << '\n'; } return 0; }