[C++]4.1クラス-作成者

3966 ワード

関数のオーバーロード


かふか多すぎる.過負荷をもたらす.
関数過負荷も意味上、関数過負荷となります.
しかし概念的にはこの概念は正しい
  • の1つの関数の名前で複数の関数を作成するのは、関数過負荷、すなわち関数過負荷です.
  • 関数の再ロードを試行します.
    #include <iostream>
    
    void print(int x) { std::cout << "int : " << x << std::endl;}
    void print(char x) { std::cout << "char : " << x << std::endl;}
    void print(double x) { std::cout << "double : " << x << std::endl;}
    int main(){
    	int a = 1;
    	char b = 'c';
    	double c = 3.2f;
    
    	print(a);
    	print(b);
    	print(c);
    
    	return 0;
    }

    print()関数は複数回作成され,複数回別々に呼び出され,思いついた値が出てくる.
  • C++は、適切なパラメータを持つ関数を呼び出します.
  • パラメータのタイプが一致しない場合、最も類似したタイプのパラメータを持つ関数が呼び出されます.

  • 変更のタイプ変更のタイプ:intchar、unsigned char、shortint、unsigned integensed shortdoublefloatinum
  • そのように変更すると、似たようなタイプが見つからず、曖昧(曖昧)になります.
  • メンバー関数宣言


    クラスのメンバー変数をこのように宣言することもできます.
    #include <iostream>
    
    class Date{
    	int year_;
    	int month_;
    	int day_;
    
    public:
    	void SetDate(int year, int month, int date);
    	void AddDay(int inc);
    	void AddMonth(int inc);
    	void AddYear(int inc);
    
    	// 해당 월의 총 일수를 구함
    	int GetCurrentMonthTotalDays(int year, int month);
    
    	void ShowDate();
    };
    
    void Date::SetDate(int year, int month, int date){
    	...
    }
    void AddDay(int inc){
    	...
    }
    ...
    int main(){
    	Day day;
        ...
        day.ShowDate();
        ...
        return 0;
    }
    
    どうして授業で発表しないのですか.
  • 毒性のため!
  • コンストラクタ


    クラスを作成するときに、複数の値を指定したり、ジェネレータに設定したりできます.
    #include <iostream>
    
    class Date {
      int year_;
      int month_;  // 1 부터 12 까지.
      int day_;    // 1 부터 31 까지.
    
     public:
      void SetDate(int year, int month, int date);
      void AddDay(int inc);
      void AddMonth(int inc);
      void AddYear(int inc);
    
      // 해당 월의 총 일 수를 구한다.
      int GetCurrentMonthTotalDays(int year, int month);
    
      void ShowDate();
    
      // 생성자
      Date(int year, int month, int day) {
        year_ = year;
        month_ = month;
        day_ = day;
      }
    };
    
    ...
    
    int main(){
    	Date day(2022, 2, 17);
    	day.ShowDate();
    	
        ...
    
    	return 0;
    
    }
  • Date dayを使用してジェネレータを呼び出します.
    次にDate()に適切に触れ,設定値に適合するクラスを生成した.
  • Default作成者


    ジェネレータを作成せずにクラスを読み込むと、何も起こりません.
    Default作成者は、このようなことを防止するために作成者にデフォルト値を設定させる作成者です.
    class Date {
      int year_;
      int month_;  // 1 부터 12 까지.
      int day_;    // 1 부터 31 까지.
    
     public:
      void SetDate(int year, int month, int date);
      void AddDay(int inc);
      void AddMonth(int inc);
      void AddYear(int inc);
    
      // 해당 월의 총 일 수를 구한다.
      int GetCurrentMonthTotalDays(int year, int month);
    
      void ShowDate();
    
      // Default 생성자
      Date() {
        year_ = 2022;
        month_ = 02;
        day_ = 17;
      }
    };

    ジェネレータ過負荷


    複数のジェネレータを生成できます.また、複数のジェネレータを作成して使用することもできます.
    ジャワを勉強している間に友達が自動的にこれを手伝ってくれます...
    class Date {
      int year_;
      int month_;  // 1 부터 12 까지.
      int day_;    // 1 부터 31 까지.
    
     public:
      void SetDate(int year, int month, int date);
      void AddDay(int inc);
      void AddMonth(int inc);
      void AddYear(int inc);
    
      // 해당 월의 총 일 수를 구한다.
      int GetCurrentMonthTotalDays(int year, int month);
    
      void ShowDate();
    
      // Default 생성자
      Date() {
        year_ = 2022;
        month_ = 02;
        day_ = 17;
      }
      
      // 생성자
      Date(int year, int month, int day) {
        year_ = year;
        month_ = month;
        day_ = day;
      }
    };
  • のように関数をリロードするように、コンストラクション関数もリロードできます.