1. crtdbg.h 를 include 한다. 2. #ifndef _DEBUG #define new new(_CLIENT_BLOCK,__FILE__,__LINE) #endif 위 3문장을 헤더파일에 작성한다. 3._CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); 위 문장을 main 맨위에 작성한다. 메모리 누수가 발생했을땐 이렇게 출력된다.동적할당 해준 부분을 제대로 delete해주지 않아서 그렇다.제대로 delete해주고 실행하면 위 문장들이 없어진다.
클래스를 상속하면 상속하는 클래스는 부모클래스, 상속받는 클래스는 자식 클래스가 된다. 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 다형성의 예를 살펴보자. 클래스 AA, 클래스AA를 상속받은 클래스BB, 클래스AA를 상속받은 클래스CC 세개의 클래스가 있다. 각각의 output은 cout 연산자를 이용해 사용한다. AA* pB = new BB;pB -> output(); AA* pC = new CC;pC -> output(); 이 상태로 출력을 하게 되면 모두 A의 output이 나오게 된다. 이럴때 사용하는것이 virtual 함수이다. AA의 output 앞에 virtual 을 붙여주고 실행하게 되면AABBCC의 정확한 출력을 얻을 수 있게 된다.
앞의 클래스와 객체지향(1)에서 클래스를 만들었다. 클래스를 만들었을때 자동으로 cpp파일과 헤더파일이 만들어져 있을 것이다. 헤더파일을 먼저 살펴보자. #pragma once // 앞으로 include될 파일들 중 중복된 것을 1번만 포함시킨다. class start { int _a; // 클래스 멤버변수 public: // 접근지정자 start(); // 생성자 ~start(); // 소멸자 }; - 생성자 메인함수에서 start를 생성할때 불려지는 함수이다. start s; 를 메인함수에서 실행하면 start 클래스의 생성자 start()가 불리어 지는 것이다. 생성자의 특징은 반환형이 없고, 클래스의 이름과 이름이 같은 함수라는 것이다. - 소멸자 생성자에 ~가 붙은 함수이다. 객체가 소멸될 때 ..
클래스를 알기 전 객체지향의 특징을 먼저 알아보자. 객체지향은 5가지의 특징을 가진다. 캡슐화, 정보은닉, 추상화, 상속, 다형성 이다. - 캡슐화 : 표현하고자 하는 자료와 동작을 하나의 단위로 묶는것이다. - 정보은닉 : 객체의 속성들 중 외부에서 사용하는 기능만 공개하고 나머지는 숨기는 것이다. - 추상화 : 객체의 효율적이고도 안전한 사용을 위해 인터페이스를 설계하여 구현하는것이다. 이 때문에 외부에서는 인터페이스만 볼 수 있고, 내부구현은 볼 수 없다. - 상속 : 이미 만들어진 클래스를 파생시켜 새로운 클래스를 정의하는것이다. - 다형성 : 똑같은 호출이라도 상황이나, 호출하는 개체에 따라 다른 동작을 할 수 있는 능력이다. 클래스를 만들어보자 새로운 프로젝트를 만든다. 파일 >> 새로만들기 ..
콘솔을 이용한 간단한 전투게임을 만들자. 캐릭터와 스킬은 구조체를 이용해 구현하고, 공격은 함수를 이용해 구현해보자. 먼저 스킬의 이름, 최저 대미지, 최대 대미지를 가진 skill 구조체를 만든다. struct stSkill { char* name; int minDam; int maxDam; } 캐릭터의 이름, 현재hp, 최대 hp, 스킬3개를 가진 캐릭터 구조체를 만든다. (mp는 hp와 같은 방법으로 만들면 된다.) stuct stCharacter { char* name; int hp; int maxHp; stSkill skill1; stSkill skill2; stSkill skill3; } 메인함수에서 캐릭터 hero 와 enemy를 만든다. 구조체는 일반 변수를 우리가 직접 만든것이라고 생각하..
1. 함수의 특징- 함수에 인자로 값을 주면 값을 복사하기만 할 뿐, 실제 복사는 이루어지지 않는다. 이것을 call by value라고 한다. 예를 들어 mySwap 함수를 만든다면 main함수에서 인자를넣어 mySwap을 호출 할 것이다. a와 b에 3과 5를 넣어 mySwap을 호출 했지만, 실제로는 mySwap이라는 함수에 새로운 int a, int b의 공간이 생겨 3과 5라는 값이 복사된것이다.mySwap 을 실행 한 뒤에도 원래 main의 저장공간 a, b에는 변화가 없으므로 swap이 되지 않았음을 확인 할 수 있다. 그렇다면 실제 main의 a와 b의 값을 바꾸려면 어떻게 해야하는가2. 포인터를 사용한 함수함수에 인자로 주소값을 주면 그 주소값에 직접 접근하여 값을 변화시켜 swap을 실..
빙고게임을 만들어보자 1~25 까지의 숫자로 5 X 5 의 빙고판을 만들고, 입력한 숫자가 있는 자리는 #으로 바꿔주어 가로 한줄이 모두 # 또는 세로 한줄이 ㅁ두 # 또는 대각선이 모두 #이면 빙고숫자를 올려주고, 빙고가 5개 이상이 되면 게임을 끝낼것이다. 1. 1 ~ 25 순서대로 이루어진 5 X 5의 빙고판을 만든다. int bingo[5][5]; // 5 5 의 2차원 배열을 이용 for (int i = 0; i input ; for (int i = 0; i< 5; i++){ for (int j = 0; j < 5; j++) { if(bingo[i][j] == input) { // 빙고판의 숫자와 입력받은 숫자 비교 bingo[i][j] = 35; break; } } } 4. #의 갯수를 세어 ..
1. 함수란? 같은 명령을 반복해야 할 때 반복 되는 것들을 묶어서 표현한 것이 함수이다. 수정사항이 생기면 함수를 사용하지 않은 코드는모든 코드를 돌아보며 고쳐야 하지만 함수를 사용하면 함수만 수정 하면 되므로 코드의 유지 보수에 도움을 준다. 2. 함수의 구조 반환형 함수이름 (매개변수타입 매개변수) { //함수에서 하는 일 return 반환값; } 함수의 구조는 위와 같이 반환형, 함수이름, 매개변수타입, 매개변수, 반환값이 있다. 반환형을 함수를 수행한 후 받을 수 있는 결과값의 타입이다. void, int, double, float등이 올 수 있다. 함수이름은 함수의 이름이다. 이름을 지을 때에는 숫자로 시작하면 안되고, _를 제외한 특수문자는 올 수 없다는 특징이 있다. 매개변수의 타입은 함수..
- Total
- Today
- Yesterday
- ngui 스크롤뷰 파티클
- 연말정산
- 클라이언트 면접
- ngui 파티클
- 휴대용유모차
- 언제어디서나요요
- 도서대출프로그램
- 유니티 a href
- 구글 스프레드시트 드롭다운
- particle cliping
- 직군면접
- 베이비젠요요
- ngui scrollview particle
- 유니티 Library
- ngui 스크롤뷰 파티클 클리핑
- 기술면접
- 값형식과 참조형식의 차이
- 유니티 텍스트 하이퍼링크
- Unreal
- 성남돌잔치
- UPROPERTY
- c언어
- C#
- 유니티 개발자 면접
- 내돈내산
- Library/PackageCache
- 스토케요요
- scrollview particle
- 연결리스트
- ngui 스크롤뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |