1. 함수객체 형태2. 함수객체 특징 함수 객체 형태//class [함수객체이름]class Functor{public: //[반환타입] oprator()([인자],..) { //TODO } void operator()() { cout 클래스와 동일하다연산자 오버로딩을 통해서 클래스가 함수로서 사용할 수 있도록 한다. 함수 객체 특징연산자 오버로딩을 통해 여러종류의 반환타입, 인자타입 및 개수를 생성할 수 있다.상태값을 가질 수 있다 ( ex) _value )
1. 함수포인터 형태2. 함수포인터 특징3. 함수포인터와 멤버변수 함수 포인터 형태[반환TYPE] (*[함수포인터이름]) ([인자],..)ex)int (*intPtr) (int num1,int num2); typedef int(FUNC_)(int, int);typedef int(*FUNC_PTR)(int, int);int Add(int a, int b){ return a + b;}int main(){ FUNC_* a = Add; cout Typedef 연관일반적인 typedeftypedef int INT; // int를 INT로 사용하겠다 typedef int (FUNC) (int num1, int num2);FUNC : int의 반환타입을 가지고, 인자 num1, num2를 가지는 함수typ..
1. static_cast2. dynamic_cast3. const_cast4. reinterpret_cast Static_cast일반적으로 많이 사용되는 캐스팅C스타일 ( (double) num; ) "()" 보다 안전한 타입변환 방법 Static_cast 종류기본 타입 간 변화int i = 10;double b = static_cast i;포인터 간의 변화 (** 주로 많이 사용)class Base{};class Child : public Base{};Base* basePtr = new Child;Child* childPtr = static_cast(basePtr);void 포인터 특정 포인터로 변환void *ptr = &i;int* intPtr = static_cast(ptr);열거형과 정수형 간의..
1. 얕은 복사2. 깊은 복사3. 상속에 따른 복사 테스트 얕은 복사컴파일러가 자동으로 해준다데이터의 값 복사와 포인터가 있을경우 해당 주소 그대로 복사주소 복사가 이루어질 때 문제가 될 여지가 존재class Pet{};class Player{public: int _hp; Pet* _pet;};Pet* pet = new Pet; Player p1;p1._pet = pet; Player p3 = p1; // 복사 생성자p1._pet->_hp = 200; // p3의 _pet도 동일하게 변경됨 (주소 복사가 이루어짐 = 얕은 복사) 깊은 복사"명시적"으로 지정해서 의도적으로 깊은복사가 이루어지도록 진행컴파일러의 의존도 낮춤복사 생성자 생성자와 유사하지만 자기 자신을 인자로 받..
1. 포인터 생성자/소멸자2. 타입변환을 위한 클래스 생성3. 연관성이 없는 클래스 사이의 포인터 변환4. 상속관계 클래스 사이의 포인터 변환포인터 생성자/ 소멸자포인터를 이용하여 동적할당을 할 때, 생성자와 소멸자가 호출될 수 있다.단순한, 포인터 선언은 생성자와 소멸자를 호출하지 않는다. class Player{};class Knight : public Player{};int main(){ Knight* knight; // 생성자, 소멸자 호출 x Player* player; // 생성자, 소멸자 호출 x knight = new Knight(); // 생성자, 소멸자 호출 o player = new Player(); // 생성자, 소멸자 호출 o Player*..
1. 일반적인 값& 참조타입 변환2. 업캐스팅 & 다운캐스팅 3. 암시적 변환 & 명시적 변환 4. 아무 관계없는 클래스 사이의 변환5. 상속관계의 클래스 타입 변환 일반적인 값& 참조타입 변환값 타입 변환원본 객체와 다른 비트열 재구성int a = 1234567;float b = (float)a; // 비트열 재구성 -> 값의 오류가 생길 수 있음 참조 타입 변환비트열 재구성 x , 관점만 변환int a = 1234567;float b = (float&)a; // a의 주소값을 float으로 이해하겠다라는 의미 (값의 변형이 존재)// float b = *(float*)&a; // 동일한 표현 업캐스팅 & 다운캐스팅업캐스팅작은 것 -> 큰 것으로 변경더 많은 범위를 표현할 수 있는 타입으로..
1. malloc / free 2. new / delete 3. new [] / delete[] 4. malloc과 new의 차이 Malloc / Free[MALLOC][반환타입]* [포인터이름] = malloc([사이즈])ex) void* pointer = malloc(sizeof([Class]))[Free]free([포인터이름])ex) free(pointer);특징사이즈 지정 가능생성자와 소멸자 호출 xvoid* 포인터형을 사용할경우 class국한되지 않고 캐스팅을 통해 사용할 수 있다.주의HeapOverFlow 주의사이즈를 지정해줘서 사용하므로, 해당 사이즈를 넘어가는 주소공간에 접근할 위험이 존재 (힙오버플로우)Double Free이미 해제된 p..
static Static생존시기 프로그램 시작 ~ 종료까지해당 데이터를 그대로 유지접근 방법클래스 내부에서 static을 사용했을 시, 클래스 이름을 통해 호출 가능멤버함수 , 멤버 변수에 적용 가능일반 함수에 static을 사용했을 시, 해당 함수 범위내에서 접근 가능전역으로 사용했을 시, 해당 파일 내에서 접근 가능사용이유메모리에 유지해야하는 값이 존재해야할 경우 사용클래스에서 모든 객체에 동일하게 사용되어야할경우 사용static 사용 종류함수 내 정적 변수클래스 내 정적 변수클래스 내 정적 함수정적 전역 변수 및 함수 class StaticTest{public: //정적 멤버 함수 void static Print() { cout
- Total
- Today
- Yesterday
- 우선순위 큐
- BFS
- 알고리즘
- DFS
- 백준
- 클래스
- Spring
- bean
- 오블완
- JDBC
- Thymeleaf
- 타입변환
- JSON
- 정렬
- 게시판 프로젝트
- 코딩테스트
- db
- 검증
- 버블정렬
- 티스토리챌린지
- stack
- 기술면접
- HTML5
- 포트폴리오
- 이진탐색
- 깊이우선탐색
- 예외처리
- SQL
- 게시판
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |