C++の起動


🔑Object-Oriented Programming


•オブジェクト向けプログラミング(OOP)は、データフィールド(オブジェクトのプロパティを記述する)と関連プロセスを持つ「オブジェクト」の概念を表すプログラミングパターンです.通常、クラスインスタンスとしてのオブジェクトは、アプリケーションとコンピュータプログラムを設計するためにインタラクティブに使用されます.
•C+、Objective-C、Smalltalk、Delphi、Java、Javascript、C#、Perl、Python、Ruby、PHPは、オブジェクト向けプログラミング言語の例です.

🔑OOPの3つの特性

  • パッケージ(パッケージ)
  • 多形性
  • 継承(継承)
  • 1.カプセル化


    データと機能を1つのコンポーネントにカプセル化することで、データと機能を選択的に非表示にすることができます.
    メソッドまたは変数へのアクセスを制御するためのクラスのprivate、public.

    2.多形性


    異なるタイプのエンティティに単一のインタフェースを提供し、関数と演算子に多形性を適用できます.
    関数、上書き演算子の概念!

    3.継承性


    •継承により、プログラマは他のクラスの観点からクラスを定義できるため、アプリケーションの作成とメンテナンスが容易になります.
    •継承により、コード機能を再利用し、実装時間を短縮できます.

    🔑標準I/O cout,cin


    cout


    c言語のprintf文を挿入演算子「<<」で置き換える
    挿入演算子を複数回使用して文字列と数値を関連付けて出力することもできます.
    endを使用して改行、次の行に移動できます.
    #include <iostream>
    
    using namespace std;
    
    int main() {
    	cout << "First Sentence" << endl;
      cout << "Second Sentence. \nThird sentence." << endl;
    }
    
    結果:
    First Sentence.
    Second Sentence.
    Third sentence.
    参考として、ENDの場合、flush()関数を同時に持つため、実行ごとに出力バッファを消去するプロセス(flush)が生成され、「n」よりも速度が遅いため、「n」の使用に慣れたほうがよい.

    cin


    ">>"抽出演算子で宣言変数の入力を受信できます
    同様に、複数の演算子を接続して使用して、スペースまたは行を開いて値を受け入れることもできます.
    #include <iostream>
    
    using namespace std;
    
    int main() {
    	int i;
    	char c;
    	cin >> i >> c; 
    }
    結果:
    入力:i a
    出力:ia

    I/O Quiz


    #include <iostream>
    
    using namespace std;
    
    int main() {
    	cout << "Enter age, grade, and name:" << endl;
    	int age;
    	float grade;
    	char name[10];
    	
    	cin >> age >> grade >> name;
    	cout << "Age= " << age << ", Grade= " << grade << ", Name = " << name << endl;
    
    }

    🔑へんすう


    変数のライフサイクル(または範囲)=変数を作成および破棄する時間
    •変数の使用可能範囲=ブロックで定義された変数はブロックのみでアクセスできます

    ex) Scope of Variables

    #include <iostream>
    
    using namespace std;
    
    int main() {
    	int var = 1;
    	{
    		char var = 'a';
    		{
    			cout << "var = " << var << '\n';
    		}
    		cout << "var = " << var << '\n';
    	}
    	cout << "var = " << var << '\n';
    }
    結果:
    var = a
    var = a
    var = 1
    一番奥のvarはブロック内に変数宣言がないので、直接外部から変数をインポートします.
    残りの部分はブロック内の変数宣言を参照して出力する

    ゾーン変数


    宣言位置local,グローバルストレージ位置auto,static,register

    🔑こうぞうたい


    •変数名の下のブロックで変数リストの複雑なデータ型宣言を宣言します.
    •一部の変数は、ポインタまたは変数名でアクセスできます.
    #include <iostream>
    
    using namespace std;
    
    struct Student {
    	int id;
    	float grade;
    	int gender;
    };
    
    int main() {
    	struct Student st;
    	cout << "학번을 입력하세요\t";
    	cin >> st.id;
    
    	cout << "성적을 입력하세요\t";
    	cin >> st.grade;
    
    	cout << "성별을 입력하세요(남자:1, 여자:2)\t";
    	cin >> st.gender;
    
    	cout << "\n\n";
    	cout << "입력하신 학생의\n";
    	cout << "학번은 " << st.id << "\n" ;
    
    	cout.setf(ios::showpoint);
    	cout.precision(2);
    
    	cout << "성적은" << (float)st.grade << "\n";
    	cout << "성별은" << (st.gender == 1 ? "남자" : "여자") << "\n";
    	cout << "입니다\n";
    
    }
    結果:
    学号20173212365を入力してください
    成績4.5を入力してください
    性別を入力してください(男性:1、女性:2)1
    入力した学生の
    学号は2017312365
    成績は4.5
    性別:男性
    はい.
    cout.setf(ios::showpoint):小数点(.)を表示し、省略した0をすべて出力(デフォルトは6ビット)
    cout.精密度(2):2ビットexを示す45.5なら46です.表示

    構造クエリー


    #include <iostream>
    
    using namespace std;
    
    struct Drink {
    	int Sprite = 10;
    	int Coke = 10;
    };
    
    struct Food {
    	int Rice = 10;
    	int Pizza = 10;
    };
    
    int main() {
    	Drink drk;
    	Food fd;
    
    	while (1) {
    		int answer = -1;
    		cout << "Order (0: Drink, 1: Food, 2: Quit) : ";
    		cin >> answer;
    
    		if (answer == 0) {
    			int drinkAnswer = -1;
    			cout << "Drink(0: Coke, 1 : Sprite) : ";
    			cin >> drinkAnswer;
    			if (drinkAnswer == 0) {
    				drk.Coke--;
    			}
    			else
    				drk.Sprite--;
    		}
    
    		else if (answer == 1) {
    			int foodAnswer = -1;
    			cout << "Food(0: Rice, 1 : Pizza) : ";
    			cin >> foodAnswer;
    			if (foodAnswer == 0) {
    				fd.Rice--;
    			}
    			else
    				fd.Pizza--;
    		}
    
    		else if(answer ==2){
    			break;
    		}
    
    		cout << "Remaining: Coke = " << drk.Coke << ", Sprite = " 
            << drk.Sprite << ", RIce = " << fd.Rice << ",Pizza = " << fd.Pizza << "\n";
    
    	}
    }

    🔑Namespace


    •ネーミングスペースには、変数や関数などのセットを識別するコンテナや構造体も含まれます.
    •名前空間で同じ名前の識別子を区別できます.
    •演算子「:」を使用して、特定のネーミングスペースの変数と関数にアクセスできます.
    または、namespace stdを使用するようにネーミングスペースを宣言する必要があります.
    #include <iostream>
    using namespace std;
    
    namespace AA{ 
    	char test = 'A';
    	void func(char c) {
    		cout << "Inside AA, Input: " << c << endl;
    	} 
    } 
    
    namespace BB {
    	char test = 'B';
    	void func(char c) {
    		cout << "Inside BB, Input: " << c << endl;
    	}
    } void main() { 
    	AA::func(AA::test);
    	AA::func(BB::test);
    	BB::func(AA::test);
    	BB::func(BB::test);
    }
    世界にはハンサムな人がたくさんいますが、李氏家族のハンサムを呼びたい場合は、ネーミングスペース(同じ名前の関数名、変数名はネーミングスペースによって定義できる)を使用することを考慮することができます.

    🔑暗黙的変換、明示的変換


    デフォルトのフォーマットのコピー:
    •コンパイラによる自動変換
    •ハイブリッド式では、必要に応じて1つ以上のサブタイプのデータをスーパータイプに変換して、プログラムが正しく動作していることを確認できます.
    明示的な変換
    •プログラムで宣言された変換
    •複数の明示的な変換方法

    結果:
    Weight percent = 0
    Real Weight percent = 75