[C++]3日目(クラス)


Class


オブジェクトの概略図
1.カテゴリ基本概念
クラスで定義された変数は、メンバー変数であってもよい
クラスで定義されている関数はメンバー機能です
クラスから作成されたオブジェクトをInstanceと呼びます
Instanceの属性(変数)はInstance Variable
Instanceの機能(関数)はInstance Method
2.クラスアクセス指定子
クラスのメンバー変数とメンバー機能のアクセス性の設定
Ⅰ) private
・クラスは、自分とそのクラスの友達として宣言されたクラスのメンバーのみにアクセスできます.
・メンバー変数またはメンバー機能がprivateとして宣言された場合、これらのメンバーは、そのクラスのメンバー機能またはfriendとして指定されたクラスまたはFusionからアクセスできます.
Ⅱ) protected
・Class自身および派生Classアクセス可能なメンバー
・メンバー変数またはメンバー機能が保護されていると宣言された場合、これらのメンバーはそのクラスのメンバー機能またはサブクラスのメンバー機能からアクセスできます.
Ⅲ) public
・すべてのカテゴリにアクセスできるメンバー
・メンバー変数またはメンバーFunctionがpublicと宣言された場合、main()を含む任意のFunctionからメンバーにアクセスできます.
※接近者指定の過失はprivate

3.クラス宣言
class 클래스의 식별자 {
	접근 지정자 :
    	멤버변수;
      	멤버함수;
};

class student {
	private :
    	int id,age;
        float point;
   	public :
    	set_student(int id,int age,float point);
        get_student();
};
4.クラスジェネレータ
Instance作成時にInstance Variableを初期化する関数
コンストラクション関数がない場合は、Instance Variableにゴミ値があるので、作成時に初期化することをお勧めします.
class 클래스의 식별자 {
	접근 지정자 :
    	멤버변수;
        멤버함수;
    클래스의 식별자(); #디폴트 생성자
    클래스의 식별자(인자); #생성자
};

class student {
	private :
    	int id,age;
        float point;
    public :
    	student(); #생성자 오버로딩
    	student(int Id,int Age,float Point); #생성자 오버로딩
    	get_student();
};

student::student() {
	id = 202200000;
    age = 18;
    point = 4.5;
}

studnet::student(int Id,int Age,float Point) {
	id = Id;
    age = Age;
    age = Point;
}

int main() {
	student STUD1(202111111,19,4.2); #암시적 생성자 호출
    student STUD2 = student(202111111,19,4.2); #명시적 생성자 호출
    student STUD3; #암시적 디폴트 생성자 호출
    student STUD4 = student(); #명시적인 디폴트 생성자 호출
    # student STUD5(); (x) - 리턴값이 student이고 인자가 없는 함수로 인식 
    
    return 0;
}
※過負荷は?関数の識別子が同じであっても、パラメータで区切られます.
5.類消滅者
Instanceを作成するときに動的に割り当てられたメモリを割り当てると、Instanceが破棄されたときに自動的に割り当てられたメモリが解放されないため、メモリの漏洩が発生する可能性があるため、キャンセル者によるメモリの解放を推奨します.
class 클래스의 식별자 {
	접근 지정자 :
    	멤버변수;
        멤버함수;
    클래스의 식별자(); #디폴트 생성자
    클래스의 식별자(인자); #생성자
    ~클래스의 식별자(); #소멸자
};

#include <iostream>

class student {
	private :
    	int id,age;
        float point;
        char* name;
   	public :
    	student();
        student(int Id,int Age,float Point,const char* Name);
        ~student(); #소멸자
        get_student();
};

student::student() {
	id = 202200000;
    age = 18;
    point = 4.5;
    name = NULL;
}

studnet::student(int Id,int Age,float Poin,const char* Name) {
	std::cout << "생성자 호출";
	name = new char[strlen(Name)+1];
    strcpy(name,Name);
    
	id = Id;
    age = Age;
    age = Point;
}

student::~student() {
	std::cout << "소멸자 호출";
	if (name != NULL) #이름이 있는 경우
		delete name;
}

void creat_student() {
	student STUD1(202111111,19,4.5,"고독한미식가");
    
    return;
}

int main() {
	creat_student();
    
    return 0;
}

↓

생성자 호출
소멸자 호출