본문 바로가기

전체 글164

Modern C++ : const vs constexpr (98, 11, 14, 17, 20) 상수와 상수 표현식 : const vs constexpr 개요C++에서 const와 constexpr는 모두 상수를 정의하는 데 사용되지만, 초기화 시점과 컴파일 타임 평가 여부에서 중요한 차이가 있습니다. const는 런타임에 초기화될 수 있는 읽기 전용 변수를 선언하는 반면, constexpr는 컴파일 타임에 값이 결정되는 진정한 의미의 상수를 선언하여 컴파일러 최적화와 타입 시스템에 더 많은 정보를 제공합니다. C++ 버전별 주요 키워드 도입 시기C++98: const 키워드를 사용하여 읽기 전용 변수를 선언했습니다.C++11: constexpr 키워드가 도입되어, 변수나 함수가 컴파일 타임에 평가될 수 있음을 명시적으로 나타낼 수 있게 되었습니다.C++14: constexpr 함수의 제약이 완화되.. 2025. 8. 6.
Modern C++ : type conversions (11, 14, 17, 20) 타입 변환 : type conversions 개요본 문서에서는 C++11 이후에 도입된 다양한 타입 변환 기능들을 한눈에 살펴보고, 각 기능의 사용법과 장단점을 제시합니다. C++ 버전별 주요 키워드 도입 시기C++11auto, Uniform Initialization ({})static_cast(명시적 변환) 강화C++14함수 반환형 autoC++17구조적 바인딩 (Structured Binding)C++20std::bit_cast (헤더 ) 내용 설명auto변수 선언 시 타입을 컴파일러가 추론코드 가독성 향상 및 복잡한 타입 축소Uniform Initialization중괄호 {} 를 사용해 초기화직접 리스트 초기화(direct list-init)에서 narrowing 금지 규칙 적용축소 변환 (nar.. 2025. 8. 5.
Modern C++ : designated initializers (20) 지정 이니셜라이저 : designated initializers 개요C++20부터 구조체와 배열 등에 지정 이니셜라이저를 사용하여 멤버 이름을 명시적으로 지정해 초기화할 수 있습니다.이를 통해 멤버 순서와 관계없이 원하는 멤버만 선택적으로 초기화할 수 있으며, 지정하지 않은 멤버는 기본값으로 초기화됩니다. C++ 버전별 주요 키워드 도입 시기C++20: P1008R1 제안에 따라 지정 이니셜라이저 도입 내용 설명구조체, 배열, 클래스 애그리게이트에 사용 가능.멤버 = 값 형식으로 초기화하며, 초기화 순서와 정의 순서는 무관지정하지 않은 멤버는 기본값(0 또는 디폴트 생성자)으로 초기화동일 멤버를 중복 지정 시 컴파일 에러 발생 예제 코드#include #include struct User { en.. 2025. 8. 4.
Modern C++ : enum concepts (11, 20) enum concepts개요C++20 Concept와 열거형(Enum)을 통합하여 타입 안전성과 가독성을 동시에 확보하는 방법을 설명합니다. C++ 버전별 주요 키워드 도입 시기C++11: enum classC++20: concept 내용 설명C++20에서 도입된 concept는 템플릿 타입 매개변수에 대한 제약 조건을 명시적으로 정의할 수 있습니다. 열거형 전용 EnumType concept를 정의하면, 템플릿 함수가 오직 열거형 타입만을 허용하도록 컴파일 타임에 검증합니다.#include #include // 열거형 타입 전용 Concepttemplateconcept EnumType = std::is_enum_v;// 열거형 값을 기본 정수형으로 변환하는 제네릭 함수templateconstexpr a.. 2025. 8. 3.
Modern C++ : enum vs enum class (98, 11) enum vs enum class 개요C++98의 전통적 enum과 C++11에서 도입된 enum class(Scoped enum)를 비교하여, 각 방식의 특징, 장단점 및 사용 시 유의점을 정리한다. C++ 버전별 주요 키워드 도입 시기C++98: enumC++11: enum class Name : UnderlyingType (기반 타입 지정) 내용 설명전통적 enum (C++98)암시적 정수 변환 허용 → 타입 안전성 부족열거자 이름이 전역 범위 오염 → 충돌 위험기반 타입 지정 불가 (기본 int)enum class (C++11)암시적 변환 금지 → 강한 타입 체킹열거자 Scoped → Color::RED 형태로 사용기반 타입 지정 가능 (enum class Color : uint8_t)static.. 2025. 8. 2.
Modern C++ 둘러보기 클래식 C++에 익숙해서 모던 C++ 변화 시기에 바닥에 뭍어두고 Rust 학습을 했었는데 흐릿해지니 충격도 줄어드는 것 같다.C++ 26에서 큰 변화가 있을거라는데, 메모리 안정성을 높인다니. 여전하다.그래도 20대 전후를 함께한 친구인데 언어 비교를 위해 다시 파내본다. Modern C++ Features (C++11, C++14, C++17, C++20, C++23)이 문서는 C++11부터 C++23까지 표준에 도입된 주요 언어 및 라이브러리 기능을 정리하고, 예제 코드를 통해 사용법을 설명합니다. 목차C++11auto 키워드범위 기반 for 문스마트 포인터 (std::unique_ptr, std::shared_ptr)nullptr람다 표현식이동 시맨틱 (rvalue 참조, std::move)기타:.. 2025. 8. 1.
배부르고 공감 능력이 부족한 사람과 함께. 배고프고 공감 능력이 부족한 사람.배고프고 공감 능력이 충분한 사람.배부르고 공감 능력이 부족한 사람.배부르고 공감 능력이 충분한 사람. 문득 이런 생각이 떠올랐다.이들은 뾰족하다. 어떻게 조화롭게 함께 살아갈 수 있을까? 배부르고 공감 능력이 부족한 사람. 이들은, - 남보다 우위에 서고 싶어하고 - 배부르면 더 이상 기본 욕구에 의한 자극이 없기 때문에, 더 강한 자극을 추구한다. (오락, 스릴, 감각적 만족, 쾌락, 도박, 사치, 과소비) - 사람, 조직, 자원 등을 지배하거나 소유하고자 하는 욕망이 크다. - 내가 원하는 대로 세계가 돌아가야 한다는 태도를 가진다. - 자신의 무관심이나 이기심을 정당화할 논리나 이념을 추구한다. (능력주의, 생존경쟁, 자유시장 논리) "나는 타인을 도와야 .. 2025. 6. 5.
아말감 30년 체험기, 천계의 바늘. 충치 치료에 사용하는 아말감 안전한가?체험 결과 개인차이가 있겠지만 좋지 않다. 신경계 교란이라 다양한 증상이 예상된다. 피로하면 설탕물 마시라고 쇼닥이 권하던 90년대.중2 시절 충치 치료하고 비교적 잘 유지해왔다.문제는 아말감으로 유지한 것이다. 충격은 바로오지 않는다. 약 2~3년 지난 어느날.온몸이 화끈 거리면서 두드러기가 생겼다.지나서 생각해보면 서서히 신경계 교란이 전방위적으로 누적된 것이 아닌가 싶다. 처음에는 화끈 거리며 두드러기가 나는 정도였지만얼마 지나지않아 조금만 활동해도 따금거리기 시작했다.병원에서는 민감해진 신경이 백혈구를 자극해서 자가 면역 반응이 일어난 것이라고 말했다.그리고 항히스타민계 약을 주었다. 먹으면 구름 위를 걷는듯 멍하고 무기력해진다.따끔거림이 덜한듯 하지만 잠시뿐.. 2025. 5. 19.
이런 고기랑 나오면 좋겠다. 일반 고기는 쉽게 접할수 있는데식물성 대체육은 대량 포장이 많아서 부담스럽다.편의점에서 2~3천원 수준으로 맛보기 좋은 소포장 있으면 좋겠다.마케팅도 되고 일석이조. 스팸 대신 건강한 식물성 고기랑. 그래서 만들어 봤습니다. 브랜드명: 고기랑이름 의미“고기랑 같이 먹는 느낌”“고기랑 비슷하지만 식물에서 온”“너랑, 밥이랑, 고기랑~” 다정하고 일상적인 말투라 기억에 오래 남음. 로고 아이디어로고 느낌: 부드러운 곡선 + 따뜻한 컬러톤 (베이지, 연갈색, 연두)‘고기’는 굵은 글씨, ‘랑’은 둥글고 말랑하게이모지 느낌의 귀여운 고기 아이콘 (하지만 식물 잎이 섞인 스타일)“ㄱ”자에 입 벌린 얼굴 그려도 귀여움 예시) 고기랑   식물에서 찾은 진짜 고기 맛 브랜드 슬로건예시)따뜻한"고기랑, 너랑 같이 먹고 .. 2025. 4. 6.