반응형

전체 글 678

C++, 텍스트 파일 저장 읽어오기 fstream

C++에서 텍스트 파일을 저장하고 읽어오는 방법은 파일 입출력을 지원하는 헤더를 사용하여 구현할 수 있습니다. 아래는 텍스트 파일에 데이터를 저장하고 다시 읽어오는 예제입니다. 1. 텍스트 파일 저장하기 (쓰기)파일에 데이터를 저장하려면 std::ofstream을 사용합니다.#include #include // 파일 입출력 헤더int main() { std::ofstream outFile("example.txt"); // 쓰기 모드로 파일 열기 if (!outFile) { std::cerr  2. 텍스트 파일 읽어오기파일에서 데이터를 읽으려면 std::ifstream을 사용합니다.#include #include // 파일 입출력 헤더#include // 문자열 처리를 위한..

C_C++ 13:27:52

C++ 예외처리 Exception Handling

C++에서 예외 처리(Exception Handling)는 프로그램 실행 중 발생할 수 있는 예외적인 상황(에러)을 처리하기 위한 메커니즘입니다. 이를 통해 프로그램의 비정상 종료를 방지하고, 적절히 에러를 처리할 수 있습니다.C++ 예외 처리는 주로 try, throw, catch 키워드를 사용하여 구현됩니다. 1. 기본 구조try {     // 예외가 발생할 가능성이 있는 코드 } catch (exception_type e) {     // 예외 처리 코드 } try: 예외가 발생할 가능성이 있는 코드를 작성하는 블록.throw: 예외가 발생했을 때 예외 객체를 던지는 명령.catch: 던져진 예외를 받아 처리하는 블록.2. 간단한 예제#include int main() { try { ..

C_C++ 2024.11.20

C++, <vector> 템플릿 이용하기

은 C++ 표준 라이브러리에서 제공하는 동적 배열 컨테이너로, std::vector 클래스를 정의합니다. 동적 배열은 크기가 가변적이어서 런타임에 요소를 추가하거나 제거할 수 있습니다.std::vector는 내부적으로 메모리를 효율적으로 관리하며, 배열과 유사한 방식으로 요소에 접근할 수 있는 기능을 제공합니다. 또한 자동으로 메모리를 재할당하면서 크기를 조정합니다. 주요 특징동적 크기 조정요소를 추가하거나 제거할 때, 자동으로 크기를 조정합니다.(초기 용량이 초과되면 메모리를 재할당하여 더 큰 공간을 확보합니다.)배열과 유사한 인덱싱요소에 배열처럼 인덱스를 통해 접근할 수 있습니다. (O(1) 시간 복잡도)STL과의 통합std::vector는 이터레이터를 지원하며, 다른 STL 알고리즘과 잘 통합됩니다..

C_C++ 2024.11.19

C++, 클래스 템플릿 class template

C++에서 클래스 템플릿은 여러 타입에 대해 동작할 수 있는 일반화된 클래스를 작성할 수 있도록 도와줍니다. 이를 통해 코드의 재사용성과 유연성을 높일 수 있습니다. 클래스 템플릿은 아래와 같은 방식으로 선언하고 사용할 수 있습니다.1. 클래스 템플릿 선언#include using namespace std;template // 또는 `class T`라고 써도 동일class MyClass {private: T data; // T 타입의 멤버 변수public: // 생성자 MyClass(T value) : data(value) {} // 데이터 출력 void printData() { cout   2. 클래스 템플릿 사용int main() { // int 타입으로..

C_C++ 2024.11.18

C++, 복사생성자 Copy Constructor

C++에서 **복사 생성자(Copy Constructor)**는 객체가 같은 클래스의 다른 객체로부터 복사되어 초기화될 때 호출됩니다. 주로 다음 상황에서 호출됩니다:객체가 복사로 초기화될 때.객체가 함수에 값으로 전달될 때.함수에서 객체를 값으로 반환할 때.복사 생성자의 기본 형태ClassName(const ClassName& other);const는 복사 생성자가 원본 객체를 수정하지 않도록 보장합니다. 예제아래는 복사 생성자를 정의하고 사용하는 간단한 예제입니다.#include #include class MyClass {private: char* name; // 동적으로 관리되는 문자열public: // 기본 생성자 MyClass(const char* inputName) { ..

C_C++ 2024.11.17

C++, 클래스 생성자에서 동적메모리 사용하는 예

C++에서 생성자 내부에서 동적 메모리를 생성하는 예제는 클래스 내부에서 멤버 변수를 동적으로 할당해야 할 때 자주 사용됩니다. new 연산자를 이용해서 메모리를 확보하기 때문에 어딘가에서 반드시 delete 연산자로 메모리를 해제해야 합니다. 그렇지 않으면 객체가 생성될 때마다 사용할 수 있는 메모리가 줄어들게 되며, 전체 프로그램에 영향을 미칠 수 있습니다.다음은 간단한 예제입니다.#define _CRT_SECURE_NO_WARNINGS#include #include using namespace std;class MyClass {private: char* name; // 동적 메모리로 관리될 문자열public: // 생성자: 문자열 동적 할당 MyClass(const char* inp..

C_C++ 2024.11.16

C++, 단항연산자 오버로딩 (전위 후위 연산자)

C++에서 단항 연산자 오버로딩은 클래스 내에서 연산자를 재정의하여 객체에 대해 특정 단항 연산(예: ++, --, -, ! 등)을 수행할 수 있도록 하는 기능입니다. 이를 통해 객체에 대해 사용자 정의 연산을 적용할 수 있습니다.단항 연산자 오버로딩 예제아래는 ++ 연산자를 오버로딩하는 간단한 예제입니다.#include using namespace std;class Counter {private: int value;public: // 생성자 Counter(int val = 0) : value(val) {} // ++ 연산자 오버로딩 (전위 연산) Counter& operator++() { ++value; // 값 증가 return *this; // 증..

C_C++ 2024.11.15

C++, 프렌드 함수로 연산자 오버로딩 만들기

C++에서 연산자 오버로딩은 클래스의 멤버 함수나 프렌드 함수를 사용하여 구현할 수 있습니다. 특히, 두 객체 간의 연산이 필요할 때 프렌드 함수를 사용하면 유용합니다. 예를 들어 두 객체의 값을 더하거나 비교하는 연산자를 오버로딩하고 싶다면, 프렌드 함수를 사용하여 접근 제한을 뛰어넘어 두 객체의 멤버 변수에 접근할 수 있습니다.다음은 프렌드 함수를 사용하여 + 연산자를 오버로딩하는 예제입니다. Complex라는 클래스가 복소수를 표현한다고 가정하고, 이 클래스에서 + 연산자를 오버로딩하여 두 복소수를 더하는 기능을 구현해보겠습니다.코드 예제#include using namespace std;class Complex {private: double real; // 실수 부분 double i..

C_C++ 2024.11.14

C++, 멤버함수로 연산자 오버로딩

Point 클래스를 C++에서 정의하고, 멤버 함수를 이용해 연산자 오버로딩을 구현하는 예제를 보여드리겠습니다. 이 예제에서는 좌표를 나타내는 Point 클래스를 만들고, 덧셈(+), 뺄셈(-), 그리고 대입(=) 연산자를 오버로딩하여 두 좌표를 더하거나 뺄 수 있도록 합니다.#include using namespace std;class Point {private: int x, y; // x, y 좌표public: // 생성자 Point(int x = 0, int y = 0) : x(x), y(y) {} // 연산자 오버로딩 - 덧셈 Point operator+(const Point& other) const { return Point(x + other.x, y + ..

C_C++ 2024.11.13

C++, typeid() 클래스 이름 알아내기

C++에서는 객체의 실제 클래스 이름을 알아내기 위해 typeid 연산자와 type_info 클래스를 활용할 수 있습니다. 이 기능을 사용하려면 객체가 다형적(polymorphic)이어야 하므로, 즉 클래스에 가상 함수가 정의되어 있어야 합니다.아래는 typeid를 이용해서 객체의 클래스 이름을 알아내는 예제입니다. #include #include class Base {public: virtual ~Base() {} // 다형성을 위해 가상 소멸자를 추가합니다.};class Derived : public Base {};int main() { Base* obj = new Derived(); // 객체의 실제 클래스 이름을 출력 std::cout (Output)Class name: c..

C_C++ 2024.11.12
반응형