Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 변수의 동적 초기화(Dynamic Initialization)란? 개념부터 예제까지 총정리

변수의 동적 초기화란?

객체의 동적 초기화(dynamic initialization)란 객체를 프로그램 실행 시점, 즉 런타임(run time)에 초기화하는 것을 의미합니다. 다시 말해, 객체의 초깃값이 소스 코드에 미리 고정되어 있는 것이 아니라 실행 도중에 결정되어 전달됩니다.

C++에서는 생성자(constructor)를 활용하여 동적 초기화를 구현할 수 있습니다. 객체를 생성할 때 생성자에 매개변수 값을 전달하면, 그 값들이 곧바로 멤버 변수의 초깃값으로 사용됩니다. 이러한 초기화 방식은 클래스 변수들을 런타임 상황에 맞게 설정해야 할 때 특히 유용합니다.

동적 초기화가 필요한 이유

  • 메모리를 효율적으로 활용할 수 있습니다.

  • 생성자 오버로딩(constructor overloading)을 통해 다양한 형식의 초기화 방법을 제공할 수 있습니다.

  • 상황에 따라 런타임에 서로 다른 형식의 데이터를 유연하게 사용할 수 있습니다.

예제 코드

아래 예제는 원금, 기간, 이자율을 입력받아 단순 이자(simple interest)를 계산하는 프로그램입니다. 객체 s1은 사용자가 입력한 값이 생성자로 전달되면서 동적 초기화됩니다.

#include <iostream>
using namespace std;

class simple_interest {
    float principle, time, rate, interest;
public:
    simple_interest(float a, float b, float c) {
        principle = a;
        time = b;
        rate = c;
    }
    void display() {
        interest = (principle * rate * time) / 100;
        cout << "Interest = " << interest << endl;
    }
};

int main() {
    float p, t, r;
    cout << "Enter principle amount, time and rate: ";
    cin >> p >> t >> r;
    simple_interest s1(p, t, r); // 동적 초기화
    s1.display();
    return 0;
}

실행 결과

Enter principle amount, time and rate: 2000 7.5 2
Interest = 300

코드 설명

사용자가 2000 7.5 2를 입력하면, 이 값들은 cin을 통해 각각 변수 p(원금), t(기간), r(이자율)에 저장됩니다. 그런 다음 객체 s1이 생성될 때 세 값이 생성자에 인수로 전달되어 멤버 변수가 런타임에 초기화됩니다. 바로 이 부분이 동적 초기화의 핵심입니다.

이후 display() 함수가 호출되어 이자를 계산하고 결과를 출력합니다. 이자 계산 공식은 다음과 같습니다.

Interest = (원금 × 이자율 × 기간) / 100 = (2000 × 2 × 7.5) / 100 = 300

이처럼 동적 초기화를 사용하면 프로그램 실행 중에 제공되는 값으로 객체를 자유롭게 초기화할 수 있기 때문에, 사용자 입력에 대응하거나 실행 환경에 따라 값이 달라지는 실제 응용 프로그램에서 훨씬 실용적입니다.