반응형 개발/C, C++67 C++ - 명시적 디폴트 생성자 C, C++ 전체 링크 아래와 같이 디폴트 생성자의 정의를 분리할 수 있다. #include #include using namespace std; class TEST { public: int value; TEST(void); void printValue() { cout 2021. 7. 29. C++ - 상수형 메서드와 mutable, const_cast<> C, C++ 전체 링크 링크를 참고하여 다시 아래의 코드를 보자. 여기서 printValue는 value1, value2를 출력만 할 뿐, 수정은 하지 않는다. #include #include using namespace std; class TEST { public: int value1; int value2; TEST() { cout 2021. 7. 28. C++ - 생성자 초기화 리스트 (Constructor Member Initializer List) C, C++ 전체 링크 class의 생성자에서 아래와 같이 변수를 초기화 할 수 있다. #include #include using namespace std; class TEST { public: int value1; int value2; TEST() { cout 2021. 7. 26. C 언어에서 날짜 구하기 C, C++ 전체 링크 C에서 현재 날짜를 구하기 위해서는 헤더를 사용한다. base = 0일 때, tm* t에 localtime(&base)를 주고, year에는 1900, month에는 1을 더하면 1970년 1월 1일이 나온다. 즉, base = 0일 때, 1970년 1월 1일을 기준으로 날짜를 계산할 수 있다. 아래의 코드를 실행해보자. #include #include int main(void) { struct tm* t; time_t base = 0; t = localtime(&base); printf("%d %d %d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); return 0; } 현재 날짜를 구하고 싶다면 base = time(NULL)을 주면.. 2021. 7. 24. C++ - 함수 템플릿 (Function Template) C, C++ 전체 링크 같은 일을 하는 함수가 타입만 다를 경우, 함수 템플릿을 이용하여 편의성과 확장성을 얻을 수 있다. template 를 선언하면 일반 함수와 만드는 것과 같다. 여기서 cout을 이용하면, return type에 상관없이 같은 방식으로 다른 타입을 출력할 수 있다. 아래와 같이 모든 type에 대해 덧셈을 return하는 함수가 있다고 하자. template T add(T a, T b) { return a + b; } 그러면 cout을 이용해 아래와 같이 출력하면 된다. cout 2021. 7. 22. 허상 포인터 (Dangling Pointer) C, C++ 전체 링크 아래와 같은 코드를 실행해보자. #include #include void test() { int* ptr = (int*)malloc(sizeof(int) * 10); /* heap 할당 */ printf("address of ptr : %x\n", ptr); for (int i = 0; i < 10; i++) ptr[i] = i; for (int i = 0; i < 10; i++) printf("%d ", ptr[i]); putchar('\n'); free(ptr); for (int i = 0; i < 10; i++) printf("%d ", ptr[i]); putchar('\n'); for (int i = 0; i < 10; i++) ptr[i] = i; for (int i = .. 2021. 7. 18. 구조체의 크기 C, C++ 전체 링크 아래와 같은 구조체 st1이 있다. #include typedef struct st1 { char a; short b; int c; char d; long long e; char* f; int* g; }; int main(void) { printf("char a size : %d\n", sizeof(char)); printf("short b size : %d\n", sizeof(short)); printf("int c size : %d\n", sizeof(int)); printf("char d size : %d\n", sizeof(char)); printf("long long e size : %d\n", sizeof(long long)); printf("char* f size : .. 2021. 6. 19. C++ - 컨테이너와 반복자 (Container and Iterator) C, C++ 전체 링크 C++의 표준 템플릿 라이브러리 (STL, Standard Template Library)는 아래와 같이 구성된다. - 컨테이너(Container) : 객체를 저장하는 객체, 컬렉션, 자료구조. - 반복자(Iterator) : 컨테이너의 원소에 접근하여 다음 원소를 가리킨다. - 알고리즘 : 연산, 검색, 삭제, 정렬 제공. - 함수 객체(Function Object) : operator의 오버로딩. - 어댑터(Adapter) : 인터페이스를 변경하여 새로운 인터페이스로 변경. - 할당기(Allocator) : 메모리 할당에 대한 클래스 객체 컨테이너는 같은 타입을 저장하고 관리할 수 있는 클래스이다. 각 컨테이너는 자신만의 삽입순서를 가진다. Sequence Container -.. 2021. 6. 11. C++ - 인라인(inline) 함수 C, C++ 전체 링크 매크로 함수는 실행속도가 빠르지만 간단한 함수도 정의하기가 힘들다. c++에서의 inline 함수는 일반 함수처럼 만들고 매크로 함수처럼 대체하는 기능이 있다. 두 변수 중 큰 값을 return하는 함수는 보통 아래처럼 만든다. int max(int a, int b) { return (a > b) ? a : b; } 위 함수를 매크로 함수로 만들면 아래와 같다. #define MAX_VALUE(A, B) (((A) > (B)) ? (A) : (B)) 아주 간단한 함수지만, 괄호가 많아지기 때문에 벌써부터 복잡해진다. 하지만 inline 키워드를 이용하면 훨씬 간단하다. inline int max_value(int a, int b) { return (a > b) ? a : b; } .. 2021. 5. 19. 이전 1 ··· 3 4 5 6 7 8 다음 반응형