ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Lecture 2 - Header file, Constructor
    DSP/Lecture 2024. 4. 25. 12:16

    1. 헤더 파일 포함:
      • 벡터 연산을 구현하기 위해, 우리는 소스 파일의 최상단에 "Vector2D.h" 헤더 파일을 포함시킵니다. 이때 사용된 이중 인용 부호는 현재 프로젝트 내에 정의된 헤더 파일을 포함한다는 의미입니다.
    2. 수학 라이브러리 포함:
      • 벡터 연산은 수학 연산을 필요로 하므로 <cmath> 라이브러리를 포함합니다. 여기서 사용된 꺾쇠 괄호는 표준 라이브러리의 수학 추상화를 포함하고자 함을 나타냅니다. 또한, PI와 같은 사전 정의된 변수를 사용하고자 할 때는, 모든 것을 포함하기 전에 상단에 매크로 정의를 사용해야 합니다.
    3. 헤더 파일의 중복 포함 방지:
      • 각 헤더 파일은 #pragma once 지시어로 시작해야 합니다. 이는 헤더 파일이 여러 번 포함되는 것을 방지하기 위함입니다.
    4. 메서드 구현:
      • 소스 파일에서는 실제로 클래스의 메서드를 구현해야 합니다. C++에서 메서드 이름을 정의하는 관행은 C 언어의 시대로 거슬러 올라가며, 클래스 이름 뒤에 콜론을 이어 메서드 이름을 표기하는 스코프 식별자를 사용하여 메서드의 고유 이름을 생성합니다.
    5. 네임 맹글링:
      • C++ 프로그램을 컴파일할 때, 컴파일러가 메서드에 대해 단일 이름을 생성할 수 있도록 하기 위해 이름이 변경되는 과정을 볼 수 있습니다. 이러한 이름 변경은 네임 맹글링(name mangling)이라고 하며, C 컴파일러에서도 코드를 컴파일할 수 있도록 합니다.

     

    1. 객체 초기화:
      • 강의 노트에서는 객체를 생성할 때 합리적인 값으로 객체를 초기화하는 것의 중요성을 강조합니다. 이는 객체가 유효한 상태로 시작하도록 보장하여 초기화되지 않은 데이터와 관련된 문제를 방지하는 데 중요합니다.
    2. 생성자의 목적:
      • 생성자는 객체의 초기 상태를 설정하는 데 사용됩니다. 객체 지향 프로그래밍에서 생성자는 객체가 생성될 때 자동으로 호출되어 필요한 초기화를 수행합니다.
    3. 생성자의 오버로딩:
      • 생성자는 다양한 형태로 오버로딩될 수 있습니다. 즉, 같은 이름의 생성자가 다른 매개변수를 가질 수 있으며, 이는 사용 상황에 따라 다르게 객체를 초기화할 수 있게 합니다.
    4. 다양한 맥락에서의 생성자 사용:
      • 생성자의 매개변수에 따라 다양한 상황에서 생성자를 사용할 수 있습니다. 예를 들어, 기본 생성자는 매개변수가 없고, 복사 생성자는 다른 객체의 복사본을 생성하는 데 사용됩니다.

    1. 생성자의 역할:
      • 생성자는 객체가 생성될 때 자동으로 실행됩니다. 객체의 초기 상태를 적절하게 설정하는 데 사용되며, 다양한 형태로 오버로드될 수 있어, 인자에 따라 다른 생성자가 사용될 수 있습니다 .
    2. 기본 생성자:
      • 기본 생성자는 아무 인자도 받지 않는 생성자입니다. 사용자가 명시적으로 기본 생성자를 정의하지 않으면, 컴파일러는 기본 생성자를 자동으로 생성합니다. 이 기본 생성자는 모든 것을 '0'으로 초기화하는 목적을 가지고 있지만, 이는 항상 원하는 동작은 아닐 수 있습니다 .
    3. 기본 생성자의 필요성:
      • 컴파일러는 환경에 구애받지 않는 방식으로 객체를 생성할 수 있어야 합니다. 예를 들어, 클래스 유형의 배열을 선언할 때 각 요소를 초기화하기 위해 기본 생성자가 필요합니다. 만약 Vector2D의 배열을 초기화하는 경우, Vector2D의 기본 생성자가 각 요소에 대해 실행됩니다 .
    4. 사용자 정의 기본 생성자:
      • 대부분의 경우, 기본 생성자를 사용자가 직접 정의할 필요가 있습니다. 내장된 생성자나 컴파일러에 의해 자동 생성된 생성자에 의존하는 것은 권장되지 않습니다. 코드를 검토하고, 자신의 기본 생성자를 정의할 필요가 있는지 결정해야 합니다 .
    class Vector2D {
    public:
        float x, y;
    
        // 첫번째 생성자
        Vector2D(float x = 0.0f, float y = 0.0f) : x(x), y(y) {}
    
        //두번째 생성자
        Vector2D(std::istream& is) {
            is >> x >> y;
        }
    };
    1. 첫 번째 생성자:
      • 이 생성자는 xy라는 두 개의 매개변수를 받습니다. 이 매개변수들에는 기본값으로 0.0f가 설정되어 있어요. 이 생성자를 사용하면, 특정한 x, y 값을 제공하거나 제공하지 않고 객체를 생성할 수 있습니다. 매개변수를 제공하지 않으면 기본값 0.0f가 사용되어 벡터의 위치가 (0, 0)이 됩니다.
    2. 두 번째 생성자:
      • 두 번째 생성자는 입력 스트림(std::istream)에 대한 참조를 매개변수로 받습니다. 이 생성자를 사용하면, 입력 스트림으로부터 xy 값이 읽혀져서 벡터의 좌표가 초기화됩니다. 예를 들어 파일이나 콘솔 입력 등 다양한 입력 소스로부터 벡터의 좌표를 설정할 수 있습니다.

     

Designed by Tistory.