목록C++ (73)
오븐 노트
#include using namespace std; // 1) struct vs class // C++에서는 둘의 차이가 거의 없다. // struct의 기본 접근 지정자는 public이고, class는 private이다. // 굳이 나눈 이유? C++은 C언어에서 파생되어 나온 언어이기에 호환성을 위해 남겨져있는 C언어의 특성 // -> struct는 구조체(데이터 묶음)을 표현하는 용도로 사용하는 것을 추천 // -> class는 객체 지향 프로그래밍의 특징을 나타내는 용도로 사용하는 것을 추천 struct TestStruct { // public: int _a; int _b; }; class TestClass { // private: int _a; int _b; }; // 2) static 변수,..
#include using namespace std; // 연산자 오버로딩(Operator Overloading) // 연산자 vs 함수 // - 연산자는 피연산자의 개수/타입이 고정되어 있음. // 연산자 오버로딩이란? 정해진 몇가지 타입 외에 자기자신의 클래스에 대한 특정 연산을 지원하고 싶을 때 사용하는 것 // 우선 연산자 함수 정의 필요 // 일반 함수가 멤버 함수, 전역 함수로 나누어지는것처럼 연산자 함수도 두가지로 나누어짐. // ※-------------------------------------------------------------------------------------※ // - 멤버 연산자 함수 version // -- a op b 형태에서 왼쪽 기준으로 실행됨 (a가 클래스..
#include using namespace std; // 멤버 변수 초기화 ? 다양한 문법이 존재 // 초기화를 해야하는 이유 // - 버그 예방에 중요 // - 포인터 등 주소값이 연루되어 있을 경우 // 초기화 방법 // - 생성자 내에서 // - 초기화 리스트 // - C++11 문법 ex) int _hp = 100; // 모던 C++ 11 이전에서는 지원하지 않던 문법. 팀에 따라 사용하지 않을 수 있다. // 초기화 리스트 // - 일단 상속 관계에서 원하는 부모 생성자 호출할 때 필요. // - 생성자 내에서 초기화 vs 초기화 리스트 // -- 일반 변수는 별 차이 없음 // -- 멤버 타입이 클래스인 경우 차이가 생김 // -- 정의함과 동시에 초기화가 필요한 경우 (참조 타입, cons..
#include using namespace std; // 다형성 (Polymorphism == Poly + morph) == 겉은 같지만 기능이 다르게 동작한다. // - 오버로딩 (Overloading) == 함수 중복 정의 == 함수 이름의 재사용 // - 오버라이딩 (Overriding) == 재정의 == 부모 클래스의 함수를 자식 클래스에서 재정의 // 바인딩 (Binding) = 묶는다 -> 어떤 함수를 호출해야하는지 해당 함수와 주소를 매핑하여 연결해주는 역할 // - 정적 바인딩 (Static Binding) : 컴파일 시점에 결정 // - 동적 바인딩 (Dynamic Binding) : 실행 시점에 결정 ※ 단골 질문 ※ // 일반 함수는 정적 바인딩을 사용 // 동적 바인딩을 원한다면?..
#include using namespace std; // [생성자(Constructor)]와 [소멸자(Destructor)] // 클래스에 '소속'된 함수들을 멤버 함수라고 함 // 이 중에서 굉장히 특별한 함수 2종이 있는데, 바로 [시작]과 [끝]을 알리는 함수들 // - 시작(탄생) -> 생성자 (여러개 존재 가능) // - 끝(소멸) -> 소멸자 (오직 1개만) // [암시적(Implicit) 생성자] // 생성자를 명시적으로 만들지 않으면, // 아무 인자도 받지 않는 [기본 생성자]가 컴파일러에 의해 자동으로 만들어짐. // -> 그러나 우리가 명시적(Explicit)으로 아무 생성자 하나 만들면, // 자동으로 만들어지던 [기본 생성자]는 더 이상 만들어지지 않음. // class는 일종의..
#include #include using namespace std; const int MAX = 100; int board[MAX][MAX] = {}; int N; void PrintBoard() { for (int y = 0; y < N; y++) { for (int x = 0; x < N; x++) { cout
코딩 테스트 출제 가능성 #include using namespace std; // 문제1) 문자열 길이를 출력하는 함수 int StrLen(const char* str) { // str라는 문자열의 길이를 반환 int count = 0; while (str[count] != '\0') count++; return count; } // 문제2) 문자열 복사 함수 char* StrCpy(char* dest, char* src) { // #1 배열 형식 int count = 0; while (src[count]) { dest[count] = src[count]; count++; } dest[count] = '\0'; return dest; // #2 포인터 형식 //char* ret = dest; //whi..
#include using namespace std; // main // - EnterLobby (PlayerInfo) // -- CreatePlayer // -- EnterGame (MonsterInfo) // --- CreateMonsters // --- EnterBattle enum PlayerType { PT_Knight = 1, PT_Archer = 2, PT_Mage = 3, }; enum MonsterType { MT_Slime = 1, MT_Orc = 2, MT_Skeleton = 3, }; struct StatInfo { int hp = 0; int attack = 0; int defence = 0; }; void EnterLobby(); void PrintMessage(const cha..