ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.