프로그래밍/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
반응형