-
2024.02.28 - class 아주 기본적인 내용C++ 2024. 3. 3. 19:47
클래스는 구조체 비슷한거다. 구조체 처럼 멤버 변수, 멤버 함수를 포함할 수 있는 사용자 정의 데이터 타입이다.
class 클래스이름 {
멤버 변수, 멤버 함수....
};앞서 배웠던 구조체랑 문법이 똑같음을 알 수 있다. 구조체와 클래스는 기본 접근 제어의 차이가 있다는 점 말고는 거의 같다고 할 수 있다. 구조체는 기본 접근 제한자가 public이며, 클래스의 기본 접근 제한자는 private으로 제한되어 있다. 쉽게 말하면 구조체에 선언된 변수나 함수는 자유롭게 접근 가능하지만, 클래스에 선언된 변수나 함수는 기본적으로 접근할 수 없다.
- 구조체와 클래스의 차이 예시
#include<iostream> struct Str { int strNum = 1; }; int main() { Str str; std::cout << str.strNum << std::endl; }
#include<iostream> class Cls { int clsNum = 2; }; int main() { Cls cls; std::cout << cls.clsNum << std::endl; }
위처럼 클래스에 선언된 멤버 변수는 private로 접근이 제한 되어있기 때문에 쉽게 접근할 수 없다.
#include<iostream> class Cls { public: int clsNum = 2; private: int clsNum2 = 3; }; int main() { Cls cls; std::cout << cls.clsNum << std::endl; }
클래스 멤버 변수의 접근 제한자를 public로 만들면 접근이 자유로워진다. 그러나 이런식으로 멤버 변수를 public으로 아무나 접근할 수 있게 만들면 클래스를 사용하는 의미가 없어진다. 그래서 보통 클래스의 private 멤버에 접근하기 위해 아래와 같은 방법을 사용한다.
#include<iostream> class Cls { public: void SetClsNum(int num); int GetClsNum(); private: int clsNum; }; int main() { Cls cls; cls.SetClsNum(7); std::cout << cls.GetClsNum() << std::endl; } void Cls::SetClsNum(int num) { clsNum = num; } int Cls::GetClsNum() { return clsNum; }
클래스 내부의 private멤버에 접근할 수 있게 public으로 Set함수와 Get함수를 만들어서 멤버에 접근할 수 있다. 보통 Set함수가 변수의 값을 설정하는데, Get함수가 변수의 값을 반환하는데 사용한다.
'C++' 카테고리의 다른 글
2024.02.29 - iterator (0) 2024.03.03 2024.02.29 - vector (0) 2024.03.03 2024.02.28 - 키워드, 식별자, namespace, 범위 지정 연산자(::), std, using (0) 2024.03.02 2024.02.27 - 인수 전달 (0) 2024.02.27 2024.02.27 - 포인터 (0) 2024.02.27