반응형

전체 글 666

c++, 정적 멤버 변수와 정적 함수 static member variables and static functions

C++에서 클래스의 정적(static) 멤버는 클래스의 모든 객체가 공유하는 변수나 함수입니다. 정적 멤버는 특정 객체가 아닌 클래스 전체에 속하므로, 클래스의 인스턴스화 여부와 관계없이 접근할 수 있습니다. 정적 멤버는 클래스가 로드될 때 생성되고 프로그램이 종료될 때 소멸됩니다. 정적 멤버 변수클래스의 모든 객체가 같은 메모리 위치를 공유하는 변수입니다.정적 멤버 변수는 클래스 외부에서 초기화가 필요합니다.정적 멤버 함수객체 없이 호출할 수 있는 함수입니다.this 포인터를 사용할 수 없으므로, 객체 고유의 멤버에 접근할 수 없습니다.예제 코드아래는 정적 멤버 변수와 정적 멤버 함수를 사용하는 간단한 예제입니다.#include using namespace std;class MyClass {public..

C_C++ 2024.11.02

C++, 생성자 오버로딩 개요 Constructor Overloading Overview

C++에서 생성자 오버로딩(Constructor Overloading)은 하나의 클래스에 매개변수의 수나 타입이 다른 여러 개의 생성자를 정의하는 것입니다. 이를 통해 객체를 생성할 때 다양한 방법으로 초기화를 수행할 수 있습니다. C++에서는 함수 오버로딩을 허용하므로, 생성자 역시 다양한 형태로 정의할 수 있으며, 컴파일러는 생성자 호출 시 전달된 인수의 타입과 개수에 맞는 생성자를 자동으로 선택하여 호출합니다. 생성자 오버로딩 예제#include #include using namespace std;class Person {private: string name; int age;public: // 기본 생성자 Person() { name = "Unknown"; ..

C_C++ 2024.10.25

C++, 인라인 함수란? What is an inline function?

C++에서 인라인 함수(inline function)는 함수 호출 시 발생하는 오버헤드를 줄이기 위해 사용하는 기법입니다. 함수 호출이 반복되면 호출에 대한 오버헤드(스택 메모리 할당, 매개변수 전달 등)가 성능 저하를 일으킬 수 있는데, 인라인 함수는 이를 방지하고자 함수 호출을 함수 코드로 대체하여 성능을 개선할 수 있습니다.1. 인라인 함수란?인라인 함수는 함수 호출을 컴파일러가 함수 호출 부분에 해당 함수의 코드를 삽입(바디를 복사)하는 방식입니다. 컴파일 타임에 수행되며, 호출을 직접적으로 생략해 효율을 높입니다. 함수 호출 비용이 사라지므로 빠른 성능이 요구되는 곳에 적합합니다.2. 인라인 함수 선언 방법inline 키워드를 함수 정의 앞에 추가하여 선언합니다.inline int add(int..

C_C++ 2024.10.21

C++, 클래스 기초: 자동차 클래스를 상속한 전기차

C++에서 자동차를 모델로 기초적인 클래스를 작성하려면, 클래스는 객체 지향 프로그래밍의 핵심 개념인 추상화, 캡슐화, 상속 및 다형성을 잘 설명할 수 있습니다. 자동차를 예로 들어 기초적인 클래스 내용을 요약해 보겠습니다. 1. 클래스 정의C++에서 클래스는 객체의 청사진입니다. 자동차를 모델링하기 위해 Car 클래스를 만들 수 있습니다.#include using namespace std;class Car {private: // 멤버 변수 string make; // 제조사 string model; // 모델명 int year; // 제조 연도 double fuelLevel; // 연료량public: // 생성자 Car(string..

C_C++ 2024.10.20

C++, 공용체 (union) 개요

C++에서 공용체(union)는 여러 데이터 멤버를 하나의 메모리 공간을 공유하게 하여, 메모리 사용을 절약하는 데 유용한 데이터 구조입니다. 공용체는 모든 멤버가 같은 메모리 공간을 공유하므로, 동시에 하나의 멤버만 값을 가질 수 있습니다. 즉, 하나의 멤버에 값을 저장하면 다른 멤버의 값은 덮어씌워지게 됩니다. 공용체의 특징메모리 공유: 모든 멤버는 같은 메모리 공간을 공유하므로, 가장 큰 멤버의 크기만큼의 메모리만 할당됩니다.동시에 하나의 멤버만 유효: 공용체에 값을 저장할 때는 하나의 멤버만 저장할 수 있습니다. 다른 멤버에 접근하면 예상치 못한 결과가 나올 수 있습니다.기본 초기화: 공용체는 기본적으로 첫 번째 멤버만 초기화할 수 있습니다.상속 불가: 공용체는 클래스처럼 상속할 수 없습니다.공용..

C_C++ 2024.10.17

(C++) 열거형 enum

C++에서 열거형(enumeration)은 열거된 상수 값들의 집합을 정의하는 데 사용되는 사용자 정의 데이터 타입입니다. 열거형을 사용하면 코드의 가독성과 유지보수성을 높일 수 있습니다. 각 열거형 값은 기본적으로 정수형 값을 가지며, 첫 번째 값은 0부터 시작하고 이후 값들은 순차적으로 1씩 증가합니다. 물론, 원하는 경우 특정 값을 직접 지정할 수도 있습니다. 열거형 기본 문법enum 열거형이름 {     값1,     값2,     값3 }; 예제: 요일 열거형 정의#include using namespace std;enum Weekday { Sunday, // 0 Monday, // 1 Tuesday, // 2 Wednesday, // 3 Thursday..

C_C++ 2024.10.13

c++ typedef, 기존 자료형에 새로운 이름 부여

typedef는 C++에서 기존 타입에 새로운 이름(별칭)을 부여하는 데 사용됩니다. 이를 통해 코드의 가독성을 높이거나 복잡한 타입을 간단하게 표현할 수 있습니다. 특히 함수 포인터, 템플릿 클래스, 긴 타입 선언 등을 다룰 때 유용합니다.typedef 기존_타입 새_이름; 예시 1: 기본 타입에 대한 typedeftypedef int Integer;Integer a = 5; // This is the same as writing "int a = 5;" 예시 2: 포인터에 대한 typedeftypedef int* IntPtr;IntPtr p = nullptr; // This is the same as writing "int* p = nullptr;" 예시 3: 함수 포인터에 대한 typedef#incl..

C_C++ 2024.10.12

c++ 구조체 struct

구조체는 다른 데이터 타입의 변수를 하나로 묶어서 사용할 때 유용합니다. 특히, 객체지향 프로그래밍에서 클래스와 유사하지만 기본적으로 구조체의 멤버 변수는 **public(공개)**입니다. 구조체 개념구조체는 여러 개의 변수를 하나의 단위로 묶어 연관된 데이터를 함께 관리할 수 있습니다. 구조체 내부에는 다양한 데이터 타입을 포함할 수 있으며, 구조체를 이용해 새로운 데이터 타입을 정의할 수 있습니다.  기본 구조체 선언 방법 struct 구조체이름 { 데이터타입 멤버변수1; 데이터타입 멤버변수2; // ...}; 예제: 학생 정보를 저장하는 구조체학생의 이름, 나이, 학번을 저장하는 구조체 예제를 보겠습니다.#include #include using namespace std;// 학생 ..

C_C++ 2024.10.10

C++ 함수 템플릿(Function Template)

C++의 함수 템플릿(Function Template)은 코드의 일반화를 가능하게 해주는 기능입니다. 함수 템플릿을 사용하면 함수의 매개변수 타입에 관계없이 같은 함수 코드를 여러 타입에 대해 사용할 수 있습니다. 이는 동일한 로직을 다양한 데이터 타입에 대해 중복 작성하지 않고 처리할 수 있게 해주므로, 코드의 재사용성을 높이고 유지보수를 용이하게 만듭니다.  함수 템플릿 정의함수 템플릿을 정의하려면 template 키워드를 사용합니다. 그 뒤에 타입 매개변수를 받는 꺾쇠괄호()를 붙입니다. 타입 매개변수는 주로 T, U 같은 이름으로 지정하지만, 임의의 이름을 사용할 수 있습니다. template T add(T a, T b) { return a + b;}위의 예제는 두 개의 매개변수를 받아서 더..

C_C++ 2024.10.06

C++: 윤년 구하기

C++에서 윤년을 구하는 코드를 작성하려면 조건문을 이용해 윤년의 규칙을 구현할 수 있습니다. 아래는 C++로 윤년을 구하는 코드입니다.윤년은 1년이 366일이며, 2월달이 29일까지 있는 해를 말합니다. isLeapYear(int year) 함수:연도가 4로 나누어떨어지고(year % 4 == 0), 100으로 나누어떨어지지 않으면(year % 100 != 0) 윤년입니다.하지만 400으로 나누어떨어지면(year % 400 == 0) 윤년입니다.#include using namespace std;bool isLeapYear(int year) { // 윤년 조건: 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않거나, 400으로 나누어 떨어져야 함 if ((year % 4 == 0 && y..

C_C++ 2024.10.01
반응형