본문 바로가기

전체 글220

Classic C++ : 생성자(constructor)와 소멸자(destructor) constructor and destructor 개요C++에서 객체가 생성될 때와 소멸될 때 자동으로 호출되는 특별한 멤버 함수인 생성자(Constructor)와 소멸자(Destructor)에 대해 알아봅니다. C++ 버전별 주요 키워드 도입 시기C++98 이전 (C++ with Classes): 생성자와 소멸자는 C++의 초기 버전부터 클래스의 핵심 기능으로 포함되었습니다. 내용 설명생성자란? 객체가 생성될 때 자동으로 실행되는 함수입니다.소멸자란? 객체가 소멸될 때 자동으로 실행되는 함수입니다. 예제 코드#include #include class Base{public: Base(){ // Constructor cout 실행 결과Starting main() functionI .. 2025. 11. 2.
Before Classic C++ : 레퍼런스(&)와 포인터(*) 10. 레퍼런스(&)와 포인터(*) 개요레퍼런스(reference)와 포인터(pointer)는 C++에서 메모리에 있는 기존 변수에 간접적으로 접근하는 방법을 제공합니다. 포인터는 변수의 메모리 주소를 저장하는 변수이고, 레퍼런스는 변수의 또 다른 이름(별칭)입니다. C++ 버전별 주요 키워드 도입 시기C++98: 포인터는 C에서 계승되었고, 레퍼런스(L-value 레퍼런스)는 C++ 초기부터 도입되어 객체를 효율적으로 전달하는 핵심 기능으로 사용되었습니다.C++11: R-value 레퍼런스(&&)가 도입되어, 임시 객체를 효율적으로 처리하는 이동 시맨틱(move semantics)과 완벽한 전달(perfect forwarding)이 가능해졌습니다. 또한, 0이나 NULL 대신 nullptr 키워드를 사.. 2025. 11. 1.
Before Classic C++ : struct 구조체 (struct) 개요구조체(struct)는 서로 다른 타입의 변수들을 하나의 논리적 단위로 묶어서 관리하는 사용자 정의 데이터 타입입니다. 관련된 데이터를 그룹화하여 코드의 구조를 명확하게 만들 수 있습니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): struct는 C 언어에서부터 존재했으며, 순수하게 데이터만을 묶는 역할을 했습니다.C++: C++에서는 struct가 확장되어 데이터 멤버뿐만 아니라 멤버 함수, 생성자, 접근 제어 지정자(public, private, protected) 등을 가질 수 있게 되었습니다. struct의 모든 멤버는 기본적으로 public 접근 권한을 갖습니다.C++11: 클래스 내 초기화(in-class member initialization).. 2025. 10. 31.
Before Classic C++ : Preprocessor 전처리기 (Preprocessor) 개요전처리기(preprocessor)는 소스 코드가 컴파일러에 의해 컴파일되기 전에 먼저 처리되는 특별한 지시문입니다. 주로 파일 포함, 매크로 정의, 조건부 컴파일 등의 기능을 수행합니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): #include, #define, #if, #endif 등 대부분의 전처리기 지시문은 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다.C++11/14/17: const, constexpr, inline 함수, 템플릿 등 타입에 안전하고 성능이 뛰어난 기능들이 강화되면서, 전통적인 #define 매크로의 사용은 점차 줄어드는 추세입니다. 내용 설명#include#include : 컴파일러가 지정한 표준.. 2025. 10. 30.
Before Classic C++ : Bitwise Operators 비트 연산자 (Bitwise Operators) 개요비트 연산자는 정수형 데이터의 비트(bit) 단위로 직접 조작하는 연산을 수행합니다. 하드웨어 제어, 데이터 압축, 암호화 알고리즘 등 저수준 프로그래밍에서 효율적인 데이터 처리를 위해 사용됩니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 모든 기본 비트 연산자(&, |, ^, ~, , >>)는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명& (Bitwise AND): 두 비트가 모두 1일 경우에만 결과 비트가 1이 됩니다.| (Bitwise OR): 두 비트 중 하나라도 1이면 결과 비트가 1이 됩니다.^ (Bitwise XOR): 두 비트가 서로 다를 경우에만 결과 비트가 1이 됩니다.~ (Bi.. 2025. 10. 29.
Before Classic C++ : Conditional Operator 조건 연산자 (?:) 개요조건 연산자(?:)는 C++에서 유일하게 세 개의 피연산자를 갖는 삼항 연산자(ternary operator)입니다. if-else 문을 간결하게 표현하는 데 사용됩니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 조건 연산자는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명조건 ? 표현식1 : 표현식2의 형태로 사용됩니다.조건이 참(true)이면 표현식1이 평가되고, 그 결과가 전체 연산의 결과값이 됩니다.조건이 거짓(false)이면 표현식2가 평가되고, 그 결과가 전체 연산의 결과값이 됩니다. 예제 코드#include #include int main() { // 예제 1: x에 값 할당 // 5 > 2 조건이 참이.. 2025. 10. 28.
Before Classic C++ : enum enum 개요열거형(enum)은 서로 연관된 정수형 상수들의 집합에 의미 있는 이름을 부여하여 코드의 가독성과 유지보수성을 높이는 사용자 정의 타입입니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 전통적인 enum은 C 언어 초기부터 존재했습니다.C++11: 타입 안전성을 강화하고 이름 충돌을 방지하는 enum class (또는 enum struct)가 도입되었습니다. 또한, 열거형의 기반이 되는 정수 타입을 명시적으로 지정할 수 있게 되었습니다. 내용 설명enum [열거명] { 상수명 [= 상수값], ... }; 형태로 선언합니다.상수 값을 지정하지 않으면 첫 번째 상수는 0으로 시작하며, 이후 상수들은 이전 값보다 1씩 큰 값을 자동으로 갖게 됩니다.전통적인 enum의 상수들은.. 2025. 10. 27.
Before Classic C++ : Comma Operator 04. 나열 연산자 (Comma Operator) 개요나열 연산자(,)는 여러 표현식을 왼쪽에서 오른쪽으로 순서대로 평가하는 연산자입니다. 전체 표현식의 결과값은 가장 오른쪽 표현식의 값이 됩니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): 쉼표 연산자는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명쉼표 연산자는 두 개의 피연산자를 가집니다. 왼쪽 피연산자를 먼저 평가하고, 그 결과를 버린 뒤 오른쪽 피연산자를 평가합니다. 전체 연산의 결과는 오른쪽 피연산자의 값과 타입이 됩니다. 주로 for 루프의 초기화나 증감 부분에서 여러 변수를 한 번에 처리할 때 사용됩니다. 예제 코드#include int main() { int i, j, k; /.. 2025. 10. 26.
Before Classic C++ : goto goto 개요goto는 프로그램의 실행 흐름을 지정된 레이블(label)로 무조건적으로 이동시키는 제어문입니다. C++ 버전별 주요 키워드 도입 시기C99 이전 (C/C++): goto는 C 언어 초기부터 존재했으며, C++에서도 처음부터 지원되었습니다. 내용 설명goto를 사용하면 코드의 특정 위치로 점프할 수 있습니다. 주로 다중 중첩 루프를 한 번에 빠져나가거나, 복잡한 에러 처리 로직을 단순화할 때 제한적으로 사용됩니다. 하지만 goto는 코드의 흐름을 예측하기 어렵게 만들어 가독성과 유지보수성을 해칠 수 있으므로 사용을 지양하는 것이 좋습니다. 예제 코드#include int main() { std::cout 실행 결과--- goto to exit nested loops ---i = 1,.. 2025. 10. 25.