CPP Module 03을 평가를 받으면서 기존에 끝낸 @jaewkim 이후 과제에서도 알아두어야 한다! 이야기한 Class 의 메모리 영역 및 구성이 어떻게 되었길래 사이즈가 이렇게 나오는 지 포스트를 새로 하고자 한다. 주소값을 보게 되면 CPP Module에서 파생 클래스의 생성자가 발생될 때 기초 클래스가 불려진 후, 파생 클래스가 불려지는 지 추측을 해보게 됩니다. (사진2 참고, 각 생성자에 문구를 입력 시 기초 클래스가 먼저 출력되며 소멸자는 역으로 파생 클래스가 먼저 출력) image 1 을 통해서 보게되면 기초(부모) 클래스의 첫 번째 멤버 변수를 시작으로 파생(자식) 클래스 마지막 멤버 변수로 주소가 이어지는 것을 확인 할 수 있습니다. 해당 rosa 라는 인스턴스(객체)의 주소는 첫 ..
Exercise 00 Animal 이라는 기본 클래스를 구현, 보호되는 특성은 각 type입니다. Animal로 상속한 Dog, Cat 클래스를 구현합니다. 두 파생 클래스는 이름에 따라 유형 필드를 설정, Dog 유형은 Dog로 Cat 유형은 Cat으로 초기화해야 합니다. Animal 클래스의 유형은 비워두거나 선택한 값으로 설정할 수 있어야 합니다. 울부짖어야 합니다 WrongAnimal 클래스를 상속하는 WrongCat 클래스를 구현합니다. WrongCat makeSound 함수 실행시, WrongAnimal이 울부짖어야 합니다. 무엇이 모른 채 왜 안될까만 하다가 Virtual 이라는 키워드를 던져준 @sanjeon 감사합니다. 가상 함수 virtual 멤버함수의원형; 부모 클래스에서 상속받을 클..
Exercise 00 ATTACK과 HP를 채울 때, energy point가 1 소비 됩니다. HP가 없거나 energy가 없을 때에는 행동을 할 수가 없습니다. attack 함수로 대상이 공격받는 것과 데미지 등을 출력해야 합니다. 생성자와 소멸자 실행될 때에도 출력을 해야합니다. exercise 01 ScavTrap은 ClapTrap을 상속하게 됩니다. 생성자와 소멸자 그리고 공격함수는 다른 출력을 해야만 합니다. ScavTrap을 만들 때, ClapTrap을 만드는 것으로 시작해야합니다. 소멸자는 생성과는 앞 문단 상황과 반대로 나와야 합니다. ScavTrap과 ClapTrap의 명확하게 표기를 하기 위해 출력을 ex00과는 다르게 수정을 하였습니다. exercise 02 ClapTrap을 상속하..
New rules Default constructor (참고, 참고) 클래스의 객체 생성 시에 private 멤버를 자동으로 초기화, 객체 생성시에 딱 한번 호출 Box() { /*perform any required default initialization steps*/} // All params have default values Box (int w = 1, int l = 1, int h = 1): m_width(w), m_height(h), m_length(l){} Copy consstructor (참고, 참고, 참고) 복사 생성자 는 동일한 형식의 개체에서 멤버 값을 복사하여 개체를 초기화 깊은 복사를 위해서는 사용자가 직접 정의를 해야합니다. 복사 생성자는 새롭게 생성되는 객체가 원본 객체와 같..
General rules ▼ 더보기 General rules ▶ 클래스 이름을 UpperCamelCase 형식으로 작성합니다. 클래스 코드가 포함된 파일은 항상 클래스 이름에 따라 이름이 지정됩니다. 예를 들어: ClassName.hpp/ClassName.h, ClassName.cpp 또는 ClassName.tpp입니다. 그런 다음, 벽돌 벽을 나타내는 "BrickWall" 클래스의 정의가 들어 있는 헤더 파일이 있는 경우, 그 이름은 BrickWall.hpp가 됩니다. ▶ 달리 지정하지 않는 한 모든 출력 메시지는 줄 바꿈 문자로 끝나야 하며 표준 출력에 표시되어야 합니다. ▶ 달리 명시되지 않는 한 네임스페이스 키워드 사용 및 friend 키워드는 금지됩니다. ▶ C++에서도 메모리 누수가 발생합니다..
IPv4만 사용하기에 IPv6에 대한 내용은 언급하지 않도록 하겠습니다. IPv4 주소는 각각 8비트 4개의 블록으로 이루어진 32비트 숫자입니다. 167.119.16.62 주소가 있다면 10100111 . 01110111 . 00010000 . 00111110 와 같이 변경할 수 있습니다. 8비트로 구성되어 있어 하나의 블록은 0 ~ 255 숫자로 이루어집니다. subnetting : 하나의 네트워크 주소 대역을 여러개의 네트워크 주소로 나누는 과정 서브넷팅 계산 해보도록 하겠습니다. 167.119.16.62/25 는 서브넷마스크가 25비트라는 의미로 255.255.255.128입니다. /25 는 11111111 . 11111111 . 11111111 . 10000000 1의 갯수와 동일합니다. 두 I..
레이캐스팅은 2차원 맵에서 3차원의 원근감을 만드는 렌더링 기술로 Wolfenstein 3D 와 같은 게임이 이것을 이용하여 3D처럼구현하였습니다. 3차원 환경이라고 이야기할 수 없는 이유는 Z축을 따라 회전할 수 없기 때문입니다. 레이캐스팅으로 이루어진 세계를 만들기 위해서 벽은 항상 바닥과 직각을 유지하고 벽은 정육면체로 만들어지며, 바닥은 항상 평평해야 한다는 조건으로 만들어 보겠습니다. 레이캐스팅 기본 개념 한 칸에 0, 1로 맵이 있다는 가정하에 (0은 벽이 없고 1은 벽을 나타냅니다) 플레이어 는 해당 위치에서 광선 (Ray) 를 쏩니다. 이 광선은 맵에 이루어진 벽이 부딪힐 때까지 직진하다가 적중 (hit) 되면 거리를 측정합니다. 거리에 따라 벽의 높이를 결정합니다. (멀수록 벽이 더 낮게..
멘토링을 통해서 에러코드를 직접 하나하나 입력보다는 약속된 HTTP status로 전달이 정확하다는 멘토링을 통해서 본격적인 코드 수정을 하려고 한다. HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다 정보를 제공하는 응답 성공적인 응답 리다이렉트 클라이언트 에러 서버 에러. 상태 코드 200 OK 요청이 성공했음을 나타내는 성공 응답 상태 코드 성공의 의미는 HTTP 요청 방법에 따라 다릅니다. GET : The resource has been fetched and is transmitted in the message body HEAD : The representation headers are included in the respon..