C++
 Computer >> コンピューター >  >> プログラミング >> C++

変数の動的初期化とは?意味とC++での実装方法をわかりやすく解説

動的初期化とは何か

オブジェクトの動的初期化(Dynamic Initialization)とは、プログラムの実行時(ランタイム)にオブジェクトを初期化することを指します。つまり、オブジェクトの初期値はコンパイル時ではなく、実行時に決定・代入されます。

C++では、コンストラクタに引数(パラメータ)を渡すことによって動的初期化を実現できます。この手法は、クラスのメンバ変数を実行時に初期化したい場合に特に有効です。

なぜ動的初期化が必要なのか

オブジェクトの動的初期化が求められる主な理由は以下の通りです。

  • メモリを効率的に利用できる:必要なタイミングで必要な値だけを設定するため、無駄なメモリ使用を抑えられます。

  • 多様な初期化形式を提供できる:コンストラクタのオーバーロードを使えば、引数の組み合わせに応じた複数の初期化パターンを用意できます。

  • 実行時の状況に応じた柔軟なデータ処理が可能:ユーザー入力や計算結果など、実行時に判明する値をそのまま初期値として扱えます。

サンプルコード

以下は、単利(Simple Interest)を計算するクラスに対して、動的初期化を行うC++の例です。

#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;
        }
};
int main() {
    float p, r, t;
    cout << "principle amount, time and rate" << endl;
    cout << "2000 7.5 2" << endl;
    simple_interest s1(2000, 7.5, 2); // 動的初期化
    s1.display();
    return 1;
}

実行結果

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

コードの解説

このプログラムでは、simple_interest クラスのオブジェクト s1 を生成する際に、元本(2000)、利率(7.5)、期間(2)という3つの引数をコンストラクタへ渡しています。これにより、オブジェクトは宣言と同時に実行時の値で初期化されます。これが動的初期化の基本的な仕組みです。

静的な初期化では固定値しか扱えませんが、この方式ならキーボード入力やファイル読み込みなどで得られた値を、そのままオブジェクトの初期値として利用できます。

  1. ネットワークのインターフェースとサービスとは?基本概念と種類をわかりやすく解説

    ネットワークサービスとは 一般的にネットワークサービスとは、アプリケーション層以上で動作し、コンピュータネットワーク上で利用されるアプリケーションのことを指します。 ネットワークサービスは、データの保存(ストレージ)、操作(処理)、提示(プレゼンテーション)、通信といった機能を提供します。実装方式としては、クライアント・サーバ型アーキテクチャ、またはピアツーピア(P2P)型アーキテクチャが採用されます。 サービスインターフェースとは サービスインターフェースは、SOA(Service-Oriented Architecture:サービス指向アーキテクチャ)を実現するための仕組みです。これによ

  2. C言語における静的メモリ割り当てとは?仕組みとサンプルコードで徹底解説

    C言語でプログラムが使用するメモリは、大きく分けて「静的メモリ割り当て」と「動的メモリ割り当て」の2つの方法で確保されます。 静的メモリ割り当て(Static Memory Allocation)とは 静的メモリ割り当てとは、変数のサイズがプログラムの実行前に決定され、固定サイズの領域として割り当てられる方式です。一度確保されたメモリは、明示的に解放することはできません。プログラム内で宣言された変数に対して、あらかじめメモリが割り当てられます。 静的メモリ割り当ての主な特徴 アドレス演算子「&」を使って変数のアドレスを取得し、ポインタに代入することができます。 メモリはコンパイル時