목록코딩 (60)
영넌 개발로그
Copy constructor 새로운 객체를 만들 때, 다른 객체의 내용을 복사해서 만드는 경우 호출되는 생성자 원래 오리지널 생성자는 호출되지 않는다. - 컴파일러에 의해 자동으로 생성된다. 모든 member variable을 자동 복사한다. - 별도로 만들 수도 있다. 생성자와 동일하되, 인수는 객체에 대한 reference variable을 받는다. member variable 복사를 직접 모두 처리해줘야 한다. 특별한 일을 더 해야 한다면 별도로 만들어야 한다. Shallow copy 컴파일러 자동 생성 방법> class Car { private: int year; public: Car(int _year) : year(_year) { cout
객체를 함수의 인수로 전달하는 방식은 크게 보면 2가지, 자세히 보면 3가지가 있다. 1. call by valuew 복사본이 넘어가서 오퍼레이션이 행해지고 함수 종료 후, 복사본은 소멸 되고 원래의 객체 값은 변하지 않는다. 2. call by reference(address) 객체의 주소를 넘겨주면, 주소 값을 변경시킬 수 있다. 함수 종료 후에 객체 내용은 변해 있다. 포인터의 일종이라고 생각하면 된다. 3. call by reference variable 예시 코드 > 기본 Car class class Car { private: int year; public: Car(int _year) : year(_year) {} void showYear() { cout
Constructor 생성자 class로부터 object가 만들어 질때 실행되는 함수이다. 클래스 이름과 같은 이름을 함수 이름으로 사용한다. Destructor 소멸자 object가 사라질때 수행되는 함수이다. 클래스 이름에 ~를 붙여서 선언한다. 생성할때 객체 내부에서 사용하려고 동적으로 메모리를 할당 받을 때가 있다. 근데 object가 그냥 사라져버리면 할당 해제가 되지 않은채로 사라지므로 메모리 누수가 생길 가능 성이 있다. 따라서 객체가 할당받은 동적 메모리를 해제해야 할 때 사용한다. 오브젝트가 생성된 구역이 끝날 때 실행된다. 간단한 예시코드를 보며 이해해보자. class Car { public: Car() { cout
pointer 주소를 가르키는 변수타입 char int와 같은 변수 타입 뒤에 * 을 붙여 정의하고 사용한다. dereferencing 포인터 변수 이름 앞에 *을 붙여 그 주소 안에 값을 가져오는 오퍼레이션을 의미한다. 아래 예시에서 *pa 는 10, pa는 3000을 출력한다. #include using namespace std; int main() { int a = 10; cout
NPC란? Non-Player Character 1. 사각형을 움직여보자 화면 상에서 오른쪽으로 갔다가 왼쪽으로 갔다가 하는 코드 Vector2f pos = myRect.getPosition(); if (pos.x > 600.0f) { offset_x = -1.0f; } else if (pos.x < 30.0f) { offset_x = 1.0f; } myRect.move(offset_x, 0.0f); 2. 사각형 움직이는 속도를 조절해보자 초당 30번 while문이 실행된다. window.setFramerateLimit(30); 3. 여러 개의 사각형을 관리해보자 vector npcs(3); int inc = 0; for (auto& _e : npcs) { _e.setSize(Vector2f(30.0f,..
Color class Black, White, Red, Green, Blue, Yellow, Magenta(분홍), Cyan(하늘), Transparent(투명) CircleShape shape(radius, pointCount); radius : 반지름 pointCount : 원을 그릴 때 삼각형을 여러개 모아서 원을 만든다. 그 개수를 입력 (생략 가능) CircleShape shape(50.0f); shape.setFillColor(Color::Green); CircleShape::setPosition(float x, float y) x,y의 좌표 설정 (default : 0,0) 원의 중앙 좌표가 아닌 좌상단의 좌표를 설정하는 것 CircleShape shape(50.0f); shape.setFi..
SFML을 이용한 C++ 응용프로그램 만들기 SFML은 사용이 간편하고 C ++로 작성된 이식 가능한 API입니다. 이를 객체 지향 SDL로 생각할 수 있습니다. SFML은 모든 사람에게 가능한 한 유용하도록 모듈로 구성됩니다. OpenGL을 사용하기 위해 SFML을 미니멀 한 윈도우 시스템으로 사용하거나 비디오 게임이나 멀티미디어 소프트웨어를 구축하는 기능이 가득한 완전한 멀티미디어 라이브러리로 사용할 수 있습니다. 우선적으로, 아래 링크에서 SFML 32bit을 다운 받습니다. 32bit는 64bit 버전에서도 사용가능하니 웬만하면 32bit를 다운받는 것을 추천합니다. www.sfml-dev.org/ SFML SFML is multi-language SFML has official bindings ..
일단 기본 import 는 아래와 같이 해줍니다. pymysql은 기본 모듈이 아니므로 명령 프롬프트 창에 " pip install pymysql " 을 통해 설치해줍니다. 다음 선언은 해줘도 되고 pymysql.connect에 적어줘도 상관없습니다. 저는 깔끔하게 보이기 위해서 위에 변수로 선언해주었습니다. RDS 생성시 입력한 이름이 기억이 나지 않는다면 구성 탭에서 확인할 수 있습니다. DB이름 또한 동일한 곳에서 확인이 가능합니다. username에 마스터 사용자 이름을 적어주시고 database에 DB이름을 적어주시면 됩니다. password는 Mysql의 비밀번호 입니다. AWS에서 포트 설정을 바꾸지 않았다면 3306 고정입니다. 아래 함수처럼 만들어 줍니다. 여러 DB에 연결할 게 아니라면..
STL ? C++ 사용자를 위한 라이브러리 컨테이너(vector, stack), 반복자 (iterator), 알고리즘(sort), functor class array (벡터랑 다른 것) - class vector: 동적으로 크기 조절 가능하지만 속도가 느리다 array - 크기가 결정, 속도가 빠르다 - 배열과 동일하지만, 여러가지 함수를 제공하여 편의성을 높인 것이다 - local일 때와 global일 때 초기화가 다르다 (global은 전부 0 초기화) - #include 사용 array 정의 - array std::array a; array 함수 array.front( ) 첫 번째 요소 값 array.back( ) 마지막 요소 값 int main() { array _myarray = { 7,8,9 ..