Languages/C++
[펌]Function
Functor C++에서는 객체를 마치 함수처럼 사용 가능한 펑터가 존재한다. 펑터는 다른 말로 함수객체, 함수자, 펑션옵젝트등 많은 이름이 존재한다.(하지만 결국 다 같은말) 쉽게 생각해서 C의 함수포인터를 class의 형태로 써먹는다고 생각하면 될것 같다. 이전 스마트포인터 처럼 함수를 객체로 랩퍼 했다고 생각하면 편할것 같다. 일단 소스를 보자 #include #define MAX 10 struct Rule { // Fucntor bool operator()(int x, int y) const { return (x > y) ? true : false } }; 객체를 가지고 함수처럼 작동 시킨다고 했는데 웬 구조체가 등장했다. 한가지 짚고 넘어가야 할 것은 C++에서는 class나 struct 나 1..
delete 후에 NULL 집어넣기
CClass *cls = new CClass; delete cls; cls = NULL; delete후엔 반드시 NULL을 집어넣는다.NULL을 집어넣지 않으면 해당 주소에 쓰레기값이 들어있어서 엉뚱한 곳이 참조될 수 있으므로디버그시에 굉장히 힘들어 질 수 있다.
복사생성자 정리
#include "stdafx.h" #include class Mae{ private : char* myName; int age; public: Mae(){ std::cout
호출한 객체를 지시하는 this 포인터
클래스 안의 함수에서 this는 그 함수를 호출한 객체의 "포인터"를 참조한다. (포인터가 지시하는 값이 아니다. 포인터가 지시하는 값은 알다시피 내용참조연산자 *를 붙여서 *this를 사용한다.) void Stock::show() { using std::cout; using std::endl; cout
포인터 배열 연산
double *pw = wages; 는 wages[0]의 주소를 대입한 것과 같다. wages배열의 값들(10000.0, 20000.0, 30000.0)은 메모리 주소에 차례대로 있기 때문에pw에 1을 더하면 wages[0]의 주소에서 wages[1]의 주소로 옮겨간다.또 1을 더한다면 다음 주소인 wages[2]를 참조하게 된다.
문자열 처리
문자열 배열은 개행문자가 오거나 빈칸, 탭, 캐리지 리턴같은 화이트 스페이스가 있으면 그 위치에서 문자열이 끝난 것으로 간주한다. char name1[] = "c++ 만세"; char name2[] = "c++만세"; cout
지수표기
d.dddE+n 형식은 소수점을 오른쪽으로 n자리만큼 이동하는 것이고, d.dddE-n은 소수점을 왼쪽으로 n 자리만큼 이동하는 것이다. E+n이라고 하는것은 E에 n만큼의 10을 곱하는 것이다. ex) 2.52e+4 -> 2.52 x 10000 = 25200