프로그래밍/C++

클래스와 객체

swedu 2023. 2. 19. 23:59
728x90
반응형

2023.02.19  최초 작성

 

 

 

 

클래스와 객체

클래스와 인스턴스는 객체(Object)이다.

클래스는 인스턴스를 만들기 위한 설계도이다.

클래스는 객체를 만들 수 있고 클래스로 만든 객체는 인스턴스라고 한다.

인스턴스는 객체를 만들 수 없다.

인스턴스는 데이터와 기능으로 이루어져 있다.

 

 

생성자

클래스에 의해 인스턴스가 만들어질 때 자동 실행되는 메서드(함수) 이다.

생성자는 클래스와 같은 이름을 가지며 작성하지 않으면 자동으로 비어있는 디폴트 생성자가 만들어진다.

생성자는 main 함수보다 먼저 실행될 수 있다.

 

 

소멸자

인스턴스가 사라질 때 자동 실행되는 메서드(함수) 이다.

소멸자는 클래스 이름 앞에 Tilde(물결표)를 붙인 모양이며 작성하지 않으면 자동으로 비어있는 디폴트 소멸자가 만들어진다.

소멸자는 main함수가 종료 후 실행된다.

 

 

접근지시자

클래스 내의 멤버에 대한 접근 권한을 명시한 것이다.

public: 외부에서 클래스 내의 멤버로 접근 가능

protected: 상속 관계의 하위 클래스 외의 외부에서 접근 불가능

private: 외부에서 접근 불가능(기본값)

 

 

this 포인터

객체의 주소를 가지는 포인터이다.

클래스 내의 메서드가 실행될 때 this 포인터는 스택에 존재하는 매개변수이다.

 

 

#include <iostream>
using namespace std;
class Student {
private:
	// 인스턴스 변수 선언
	int kor = 100; // 선언 및 초기화 가능
	int eng;
	int math;
public:
	// 생성자는 main 함수보다 먼저 실행될 수 있다.
	Student(int eng, int math) :math(math) // 매개변수 선언 및 인스턴스 변수 초기화
	{
		cout << "Student 생성자 실행" << endl;
		this->eng = eng;  // this로 인스턴스 변수 초기화
		this->math = math;
	}
	// 소멸자는 main함수가 종료 후 실행된다.
	~Student() {
		cout << "Student 소멸자 실행" << endl;
	}
	void printData() {
		cout << "국어 점수 : " << kor << endl;
		cout << "영어 점수 : " << eng << endl;
		cout << "수학 점수 : " << math << endl;
	}
};

int main() {
	cout << "main 시작" << endl;
	Student s1(90, 80);
	s1.printData();
	cout << "main 종료" << endl;
	return EXIT_SUCCESS;
}

[실행 결과]

main 시작

Student 생성자 실행

국어 점수 : 100

영어 점수 : 90

수학 점수 : 80

main 종료

Student 소멸자 실행

 

 

728x90
반응형

 

728x90
반응형