본문 바로가기

c++ 객체12

C++ 31 [스트림 객체 상태 플래그] ▣ 스트림 상태 플래그 ▣ 네임스페이스 : ios_base ▣ 비트플래그 ▣ goodbit : 아무 문제없고 잘 동작할 경우 0 ▣ eofbit : 파일에 끝, 읽을 문자가 없으면 에러 반환 ▣ failbit : 입력 실패시, string을 int로 읽는 경우 0 아니면 1 ▣ badbit : 문제가 있을 경우, 에러 반환 ▣ cin.clear() : 스트림 버퍼 초기화 ▣ cin.ignore(streamsize, 문자 EOF) : size만큼 문자를 버리고 문자를 버리면 멈춤 ▣ 입력 받은 문자열을 반대로 만들기 2023. 10. 4.
C++ 26 [포맷플래그 입출력] ▣ 형식상태는 비트 형태로 표현되는 형식 플래그 값에 의해 그 의미가 지정 ▣ long setf(long n) : 형식 플래그를 인수로 받아서 이 플래그 값에 해당하는 비트의 필드를 세팅하는 함수 ▣ long unsetf(n) : setf() 함수와 반대의 기능을 수행하는 함수, 해당 비트를 끝내는 함수 ▣ long flags() : 현재 플래그의 상태를 반환하는 함수 ▣ long flags(long n) : 플래그를 인수 n의 비트 패턴으로 세팅시키고 변경되기 이전의 플래그 값으로 반환 ▣ ios::skipws : 입력 시 공백문자 무시한다. ▣ ios::left : 폭 안에 출력을 왼쪽 정렬 ▣ iost::right : 폭 안에 출력을 오른쪽 정렬 ▣ ios::scientific : 과학산술용 표기로.. 2023. 5. 3.
C++ 25 [람다 표현식] https://learn.microsoft.com/ko-kr/cpp/cpp/lambda-expressions-in-cpp?view=msvc-170 C++ 람다 식 자세한 정보: C++의 람다 식 learn.microsoft.com ▣ 람다 : c++11 표준부터 지원, 람다 표현식, 람다 함수, 이름 없는 함수 ▣ 람다 사용방법 : [캡쳐](매개변수){함수코드;};(호출인자); [](매개변수){함수코드}(호출인자); []{함수코드;}; []{함수코드;}; [](매개변수){함수코드;}; auto n = [](매개변수){함수코드;} ; auto n = [](매개변수) -> 반환형 {함수코드;}; ▣ (;) 세미콜론에 위치는 문장 끝, 함수 끝 부분에 넣어야 한다. 람다식도 동일하다. ▣ 캡처 : 람다 외부 .. 2023. 4. 28.
C++ 18 [상속, 다중상속, 가상상속] ▣ 상속 : 부모클래스(기본클래스), 자식 클래스(파생클래스)에 관계를 의미 ▣ 클래스 간에 상속을 하는 이유 : 클래스 재활용 및 생산성, 관리에 용이하기 때문 ▣ 상속 방법 : class 자식클래스명 : public 부모클래스명 { }; ▣ 부모클래스에 public, private, protected 모두 사용 가능 ▣ 상속 횟수는 제한이 없고 상속받은 자식클래스는 부모의 모든 멤버를 접근 가능 ▣ protected 접근지정자는 상속받은 클래스는 접근이 가능 ▣ 자식클래스가 부모클래스를 상속할 때에도 생성자, 소멸자 모두 실행 ▣ 자식클래스를 객체로 사용할 때 부모클래스 생성자 호출 -> 자식클래스 생성자 호출 -> 자식클래스 소멸자 호출 -> 부모클래스 소멸자 호출, 이런 순으로 실행 ▣ 이러한 생.. 2023. 4. 19.
C++ 16 [객체 반환] ▣ this : 자신에 객체 주소를 의미 ▣ *this : 포인터와 동일하게 자신에 객체 주소에 있는 값 ▣ return *this;으로 객체를 반환하게 되면 그 객체의 멤버변수들에 모든 값들이 반환된다. 2023. 4. 13.
C++ 15 [friend 함수, 클래스] ▣ 프렌드를 사용하는 이유 : 클래스, 함수, 멤버 간에 공유해야 할 상황이 있을 경우, 클래스의 private, protected 멤버를 접근해야 하는 특별한 경우 ▣ 프렌드 함수 선언 방법 : friend void gameStart(Player); : 접근할 함수 반환형 앞에 friend키워드를 붙인다. ▣ gameStart(Player) : 코드처럼 접근할 클래스를 매개변수로 지정해야 한다. ▣ void gameStart(Player p) : 함수를 정의할 때에도 매개변수를 접근할 클래스로 정해준다. ▣ 프렌드 클래스 선언방법 : friend class Player2, 접근 권한을 줄 클래스를 선언할 때 맨 앞에 friend 키워드를 붙이고 선언한다. ▣ 프렌드를 선언할 때 클래스에 public, .. 2023. 4. 13.
C++ 12 [복사생성자] ▣ 객체 복사 방법 : Player p2(p1), Player p2 = p1; ▣ 복사생성자 임의로 정의 : Player::Player(const Player& player) ▣ 객체복사 시 자동으로 복사생성자 호출 ▣ 위에 코드처럼 복사생성자를 임의로 정의하지 않을 경우 디폴트 복사생성자 호출 this->level = player.level; 처럼 기본적으로 원본객체의 멤버변수 포인터를 사본 this객체에 복사 ▣ 복사 생성자를 호출하여 임의로 복사된 객체의 값을 변경할 수 있다. ▣ 객체를 복사할 경우, 객체를 매개변수로 받아올 경우, 객체를 반환할 경우 자동으로 복사생성자를 생성하고 호출한다. 2023. 4. 6.
C++ [오버라이드] ▣ 먼저 GameManager 클래스를 선언하고 GameManager에 멤버변수, 함수를 지정합니다. Player라는 파생 클래스도 선언하고 멤버변수를 선언합니다. ▣ 그리고 Player의 객체를 p로 정의하고 p에서 Show() 멤버함수를 호출합니다. 그럼 기본클래스인 GameManager에 멤버함수 Show()가 호출됩니다. ▣ 코드를 추가해서 Player 파생클래스에 멤버함수로 기본클래스에 있던 멤버함수랑 동일한 이름으로 Show()라는 멤버함수를 선언합니다. 그리고 다시 p.show() 함수를 호출하면 위에 이미지처럼 기본클래스의 멤버함수가 아닌 파생클래스의 멤버함수가 호출됩니다. 이걸 오버라이드라고 합니다. ▣ 다시 정리하면 파생클래스가 기본클래스 함수를 대신 호출되는 걸 오버라이드라고 합니다. 2023. 2. 22.
C++ 12장 [함수객체] ▣ 안녕하세요. 이번장에서는 함수를 호출할 때 매개변수를 객체로 전달하는 코드를 공부해보도록 하겠습니다. ▣ 클래스의 소멸자와 생성자를 각각 지정해주고 메인 함수에서 객체를 정의한 다음에 디버그를 하면 이렇게 클래스 생성 시 생성자와 소멸자가 호출되는 걸 확인할 수 있습니다. 이번에는 클래스 멤버함수가 아닌 따로 함수를 만들고 그 함수의 매개변수에 클래스 객체를 전달하는 코드를 작성해보겠습니다. ▣ 코드를 작성했다면 이제 코드를 살펴보겠습니다. sum(cal) 코드를 살펴보면 sum()이라는 함수에 매개변수에 cal 클래스 객체를 전달했습니다. 그럼 클래스가 전달됩니다. 여기서 중요한 건 그 클래스의 생성자는 호출되지 않고 소멸자만 호출된걸 확인할 수 있습니다. 그 이유는 전달 받은 원본의 클래스 객체의.. 2022. 11. 3.
C++ 10장 [this 포인터] ▣ 안녕하세요. 이번장에서는 this포인터를 공부해보도록 하겠습니다. this 포인터는 말 그대로 포인터를 의미하며 단순한 포인터가 아닌 멤버 함수를 호출한 객체 자신을 가리키는 포인터, 객체 자신에 대한 포인터를 의미합니다. 코드를 작성하며 공부해보도록 하겠습니다. ▣ 기본적인 클래스와 멤버 함수를 만들어주세요. this->n = n;코드를 보시면 이게 무슨 코드이지?라고 생각하실 거라 생각합니다. 이 코드를 해석하면 this(자신의 객체 주소를 의미하고), ->는 주소에 접근하는 연산자입니다. 그리고 = n 은 멤버 함수에 있는 int n 매개변수의 값을 현재 객체에 있는 멤버 변수에 대입을 하라는 의미입니다. 디버그하고 출력을 해보면 각각 객체마다 지정했던 멤버 함수에 값이 출력되는 걸 확인할 수 .. 2022. 10. 27.
C++ 8장 [포인터 객체] ▣ 안녕하세요. 이번장에서는 포인터로 객체를 다루는 코드를 공부해보도록 하겠습니다. 포인터는 주소를 저장하는 변수입니다. C언어의 포인터의 개념과 동일합니다. 혹시 포인터를 모르시는 분은 C언어 공부에 포인터 부분을 꼭 공부해보세요. 이제 포인터 객체를 코드를 작성하며 공부해보도록 하겠습니다. ▣ 먼저 기본적인 클래스를 생성해주는 코드와 멤버 함수 코드를 작성해주세요. 그리고 메인 함수에서 Calculator num; 로 객체를 선언합니다. 그런 다음에 포인터를 선언합니다. Calculator* p = num(자료형 변수 이름 = 주소)의 형태로 코드를 작성합니다. 변수를 선언하는 코드와 동일합니다. 그리고 포인터를 이용하여 멤버 함수를 호출해보겠습니다. 포인터에 있는 멤버함수를 접근하기 위해서.(점) .. 2022. 10. 20.
C++ [클래스_01, Class, 객체, 멤버변수, 멤버함수, 접근지정자] ▣ 안녕하세요. 이번장에서는 클래스를 공부해보겠습니다. 클래스는 C언어에 구조체 형식과 매우 비슷합니다. 쉽게 이야기해서 구조체 또한 변수, 배열, 함수를 구조화시켜서 한꺼번에 관리하기 위해 만든 구조입니다. 즉 클래스는 메모리를 하나에 객체화로 구조화 시켜 관리하기 위함입니다. 이해를 돕기 위해 코드를 하나하나 작성하면서 공부해보겠습니다. ▣ 클래스는 선언하려면 C언어에서의 struct 구조체와 동일하게 class 키워드로 선언을 합니다. 자료형 타입이라고 생각하시면 편하실 겁니다. class를 작성한 다음 옆에 클래스에 이름을 치고 {} 괄호로 클래스에 범위를 지정해주세요. 구조체와 함수에 형식과 동일합니다. 그런 다음 public: 접근지정자로 외부에서 접근할 수 있게 지정을 해줍니다. 이게 있어야.. 2021. 7. 20.