반응형

분류 전체보기 685

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

C++ 클래스: 다중 상속에 관한 예제

C++에서 다중 상속은 두 개 이상의 클래스로부터 상속받을 수 있는 기능입니다. 이 기능을 사용할 때 주의해야 할 점은 상속받는 클래스들에 동일한 이름을 가진 함수나 멤버 변수가 있을 경우, 모호성(ambiguity)이 발생할 수 있다는 것입니다. 이러한 모호성은 해결 방법으로 :: 연산자를 사용하거나, virtual 키워드를 사용해 가상 상속을 통해 해결할 수 있습니다.다음은 다중 상속의 간단한 예제입니다.#include // 첫 번째 부모 클래스class Animal {public: void sound() { std::cout (Output)Some generic animal sound Vehicle is moving Flying car is flying

C_C++ 2024.09.28
반응형