C++ 고급 문법 (14) — 형변환(Conversion)

send(1024)가 컴파일되고 1024바이트짜리 버퍼가 전송된다. send는 Buffer를 받는 함수인데, Buffer에 크기를 받는 생성자가 있어서 컴파일러가 임시 객체를 만들어 넘긴 것이다. C++은 생성자와 변환 연산자를 통해 사용자 타입 사이에도 암시적 변환(implicit…

Continue ReadingC++ 고급 문법 (14) — 형변환(Conversion)

C++ 고급 문법 (13) — 스마트 포인터(Smart Pointer)

new로 만든 객체는 누군가 정확히 한 번 delete해야 한다. 함수 중간에 return이나 예외가 끼면 해제가 빠지고, 두 곳에서 해제하면 이중 해제가 된다. 스마트 포인터(smart pointer)는 이 "누가 언제 해제하는가"를 타입으로…

Continue ReadingC++ 고급 문법 (13) — 스마트 포인터(Smart Pointer)

C++ 고급 문법 (11) — 연산자 오버로딩(Operator Overloading)

벡터 덧셈을 add(a, b) 대신 a + b로 쓰고, 사용자 타입을 std::set에 넣으려면 연산자 오버로딩(operator overloading)이 필요하다. 연산자는 이름이 operator+인 함수일 뿐이지만, 멤버로 둘지 비멤버로 둘지, 무엇을 반환할지에 따라 대칭성·성능·의미가…

Continue ReadingC++ 고급 문법 (11) — 연산자 오버로딩(Operator Overloading)

LWN Weekly Report: 2026년 10월 8일 주요 뉴스

이번 주 LWN.net 위클리 에디션(10월 8일자) 주요 내용이다. Kernel Recipes 2026에서 Greg Kroah-Hartman은 LLM이 쏟아내는 보안 버그 리포트에 커널이 어떻게 대응하고 있는지를 "당황하지 말라(don't panic)"는 메시지와 함께 풀었고, 같은 행사에서…

Continue ReadingLWN Weekly Report: 2026년 10월 8일 주요 뉴스

C++ 고급 문법 (10) — 함수 포인터(Function Pointer)

qsort, signal, pthread_create처럼 C 라이브러리는 동작을 바꿀 때 함수의 주소를 받는다. C++에서도 C 라이브러리와 연동하거나, 명령 이름과 처리 함수를 표로 묶거나, 플러그인 진입점을 받을 때 함수 포인터(function pointer)를 그대로 쓴다.…

Continue ReadingC++ 고급 문법 (10) — 함수 포인터(Function Pointer)

C++ 고급 문법 (9) — 객체 복사(Object Copy)

복사 생성자를 따로 쓰지 않아도 Buffer b = a;는 컴파일된다. 컴파일러가 멤버를 하나씩 복사하는 기본 복사 생성자를 만들어주기 때문이다. 멤버가 값 타입이면 이것으로 충분하지만, 생 포인터로 자원을 소유하고 있으면 포인터…

Continue ReadingC++ 고급 문법 (9) — 객체 복사(Object Copy)

C++ 고급 문법 (8) — const 멤버 함수(const Member Function)

함수 인자를 const T&로 받도록 바꿨더니 그 안에서 부르던 getter가 전부 컴파일 에러를 낸다. getter에 const를 붙이지 않았기 때문이다. 멤버 함수 뒤의 const는 "이 함수는 객체 상태를 바꾸지 않는다"는 약속이다.…

Continue ReadingC++ 고급 문법 (8) — const 멤버 함수(const Member Function)

C++ 고급 문법 (6) — 명시적 캐스팅(Explicit Casting)

C 스타일 캐스트 (T)x는 무엇이든 통과시킨다. const를 떼는 것도, 전혀 관계없는 타입의 포인터로 바꾸는 것도 경고 없이 한 줄에 끝난다. 다중 상속이나 불완전 타입이 섞이면 같은 문법이 상황에 따라 다른…

Continue ReadingC++ 고급 문법 (6) — 명시적 캐스팅(Explicit Casting)