본문 바로가기

공부/C++

C++ 객체지향 프로그래밍 Chapter 21 클래스와 객체

설명이 좀 없는 단어에 대한 글

멤버 변수 / 멤버 함수 / 생성자 / 접근자 / 소멸자

이게 뭘뜻하는가


클래스는 클래스 객체 라고 하는 

흔히 쓰이는 글쓰기 양식이나 서식 같은  것이다.

여기서 

멤버 변수 란 해당 클래스 내에서 정의되고 사용되는 변수.

멤버 함수란 해당 클래스 내에서 사용되는 함수[함수의 내용을 정의해주어야 작동한다] 

생성자 란 클래스 내부의 멤버 변수에 관련된 값들에 변화를 줄 수 있는 함수+ 인자 가 묶인 외부에서 호출 가능한 함수. 

접근자 란 클래스 내의 접근 권한에 따라 외부에서 접근이 불가능한 것을 가능하게 해주는 기능

소멸자 란 따로 메모리를 해제하지 않아도 사용된 메모리를 해제해주는 코드를 작성하여 자동으로 메모리를 해제하게 하는 기능 

을 말한다. 

 
대충 그려본 그림

 


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

아무 이름 .cpp에 넣고 돌려볼 수 있는 코드

헤더파일은 필요 없음.

#include <iostream>
#include <string>
using namespace std;

// 학생 클래스
class Student
{
public:
string name; // 이름
int sNo; // 학번

// 생성자, 소멸자
Student(const string& name_arg, int stdNumber);
~Student();

public:
// 정적 멤버들
static int student_count;
static void PrintStdCount();

};

// 정적 멤버 변수
int Student::student_count = 0;

// 정적 멤버 함수
void Student::PrintStdCount()
{
cout << "Student 객체 수 = " <<  student_count << "\n";
}

Student::Student(const string& name_arg, int stdNumber)
{
// 학생 객체의 수를 증가시킨다.
student_count++;

name = name_arg;
sNo = stdNumber;
}

Student::~Student()
{
// 학생 객체의 수를 감소시킨다.
student_count--;
}


void Func()
{
// 객체 생성
Student std1("Bill", 342);
Student std2("James", 214);

Student::PrintStdCount();//3 객체 2개 생성[1+2]개
}

int main()
{
Student::PrintStdCount();//1 객체 미지정 : 0개

// 객체 생성
Student std("Jeffrey", 123);

Student::PrintStdCount();//2 객체 1개 생성 : 1개

// Func() 함수 호출
Func();

Student::PrintStdCount();//4 객체 1개 남아있음 : 1개

system("pause");//5
return 0;
}



\\\\\\\\\\\\\\\\\\\\\\\\\\ 

코드의 출력결과는 0 1 3 1 이 차례대로 객체 수 로 출력이 된다.



이 이유는 코드를 보면 알 수 있는데 코드 우측에 주석으로 출력 순서를 적어두었다. 


 **공부에 도움이 되었다면 손가락 버튼을 클릭해주심 좋겠습니다.**