본문 바로가기

C++19

Static 변수, 함수 # Static 이란? - static 키워드를 이용한 변수와 함수는 프로그램 실행중에 딱 한번만 할당되고 종료될때 해제 되는 것을 의미 - Static 영역에 생성 되어 객체를 생성하지 않아도 호출가능 # Static 함수 - 정적 멤버 함수, 객체없이 호출 가능 - 일반적으로 객체없이 호출할경우 어떤 문제? 멤버에 접근이 안돼( 왜? this가 없어 ) => but 정적 멤버 접근 가능 ( static 키워드가 붙은 멤버 ) # Static 변수 ( 데이터 영역 ) 1. 함수 안에 선언 될때 : 해당 함수에서만 접근 가능 2. 클래스 안에 선언 : 해당 클래스에서만 접근 가능 3. 파일 안에 선언 : 해당 파일에서만 접근 가능 => 초기화가 처음에 한번만 발생하고 콕 박혀있음 - Static 멤버 변.. 2021. 7. 29.
Singleton 패턴 #싱글톤 패턴(Single Pattern)이란? - 코드가 실행될 때 어떤 클래스를 최초 한번만 메모리를 할당하고(Static) , 인스턴스를 만들어서 사용하는 방식 - 생성자 / 소멸자를 private으로 숨기고 GetInstance() 함수 만들어 활용 #장점? - 최초 한번만 생성되기 때문에 메모리 낭비 방지 - 전역 인스턴스로 다른 클래스에서 데이터 공유 쉬움 (각종 Manager들은 singleton 으로 만드는 이유) #단점? - 하나의 인스턴스가 많은 데이터나 기능을 담당할 경우 결합도가 높아짐 (모듈화 어려움) #예시 2021. 7. 29.
class의 다형성과 가상함수 _210617 1. 다형성 - 업 캐스팅 : 부모 포인터 타입으로, 부모 클래스로부터 파생되는 자식 클래스 객체들의 주소를 가리 킬 수 있다. - 모든 객체를 부모 클래스 타입으로 인식하기 때문에, 실제 객체가 무엇인지 알 수 없다.( 어떤 자식인지 구분 불가 ) -> 아래 두 개의 객체를 같은 것으로 인식한다. - 다운 캐스팅 : 부모 클래스에서 선언된 지 않고 자식 쪽에서만 추가된 함수를 업 캐스팅된 자식 클래스에서 강제로 자식 포인터로 형 변환(캐스팅)하여 자식 클래스의 멤버에 접근하는 법 - 다이나믹 캐스팅 - 가상 함수 virtual 키워드를 통해서, 각 클래스는 자신만의 고유한 가상함수 테이블을 가지게 된다. 2. 가상 함수 (virtual) - 상속 시 가상 함수가 하나 이상 있어야한다. 일반적으로 소멸자.. 2021. 6. 17.
class의 상속과 다형성 _ 210616 1. 객체 지향 언어의 특징 - 캡슐화 ( 은닉성 ) - 상속 - 다형성 - 추상화 2. 상속 - 클래스 간 상하 관계가 생기고 자식 클래스에서 부모 클래스를 접근할 수 있게 된다 - protected : 부모 클래스 기준으로 자식 클래스는 외부 영역이기 때문에 private 으로 선언한 변수, 함수를 이용할 수 없다. 대신 protected로 선언하여 자식 클래스에서는 참조할 수 있지만 다른 외부영역에선 참조 할 수 없도록 제한한다. - 생성자 : 자식 클래스를 이니셜라이즈 할 때 부모의 생성자를 호출해준다 ( 생략할 경우 자동으로 기본 생성자 호출, 오 버로딩 된 생성자의 경우 반드시 별도 호출이 필요 ) 부모의 멤버를 개별적으로 초기화할 경우 자식생성자의 이니셜라이즈가 아닌 대괄호 안 세팅에 넣어줘.. 2021. 6. 16.
Iterator 직접 만들어 보기 _ 18일차_210607 1. Iterator 연산자 ( ++, ==, != ) - 전위 연산자( ++ ) - 후위 연산자 : 사실 ++(int)와 (int)++ 가 시점 상 동일하게 이뤄지기때문에 후위연산의 경우 값을 복사해서 리턴시키고 실제 데이터는 증가시키는 눈속임을 함 - 비교 연산자 2. Iterator erase() _ 추가 필요 3. friend class - 특정 클래스를 친구로 받아들이기, 나의 private 멤버들을 친구에게 public 처럼 쓸 수 있게 함 - friend 지정은 단 방향적, 상속되지 않고 명시적으로 지정한 class만 해당된다. 4. 생성자에 관해서 - 생성자가 한개 이상 있으면 기본 생성자는 자동으로 생성되지 않음 => 만약 생성자 구분이 필요하면 직접 다 만들어줘야함 2021. 6. 7.
Iterator 개념, 직접 만들어보기 _ 17일차 _210604 1. iterator - iterator 는 반복자, 라이브러리가 가지고 있는 형식대로 자료구조에 접근한다. 컨테이너가 관리하는 요소에 참조(접근)할 수 있게 해주는 추상화된 개념, 포인터와 비슷하다 - 클래스 안의 클래스 ( inner class ) : 클래스 내부에 public으로 선언, class가 템플릿일경우 iterator도 템플릿 - 클래스 생성 후 iteraror를 별도로 호출(생성)하지 않을경우 생성되지 않음 - iterator를 포함하고 있는 클래스의 private 멤버(변수, 함수)에 접근 가능 - 별도의 연산자 만들수 있음 - 함수는 iterator를 포함하고 있는 클래스에 선언 후 클래스 외부(헤더파일 내부)에 작성 2021. 6. 7.