オブジェクトの動的作成

3198 ワード

C++プログラムでスタックオブジェクトを作成および削除するには、newとdeleteの2つの演算子を使用します.演算子newの機能は、メモリを動的に割り当てたり、スタックオブジェクトを動的に作成したりすることです.構文形式は、newデータ型(初期化パラメータリスト);1.作成されたオブジェクトが基本タイプ変数である場合、初期化プロセスは割り当てです.例:int*point;point=new int(2); intタイプのデータを格納するためのメモリ領域を動的に割り当て、その空間に初期値2を格納し、ポインタpointに最初のアドレスを割り当てます.詳細基本データ型では、メモリを割り当てた後に初期値を設定しない場合は、カッコを省略できます.例えば、int*point=new int;カッコは保持されますが、カッコに数値が書かれていない場合は、0でオブジェクトを初期化します.例えば、int*point=new int()2.作成されたオブジェクトがクラスのインスタンスオブジェクトである場合、初期化パラメータリストのパラメータタイプと個数に基づいてクラスの構築関数を呼び出します.詳細:newがクラスのオブジェクトを作成するときに、クラスにユーザー定義のデフォルトコンストラクション関数がある場合、「new T」と「new T()」の両方の書き方の効果は同じで、このデフォルトコンストラクション関数が呼び出されます.ただし、ユーザーがデフォルトのコンストラクション関数を定義していない場合は、「new T」を使用してオブジェクトを作成すると、システムが生成した暗黙のデフォルトコンストラクタが呼び出されます.「new T()を使用する」「オブジェクトの作成時に、デフォルトのコンストラクション関数で実行されるアクションに加えて、ベース・データ型とポインタ・タイプのメンバーに0を初期値として割り当てます.このプロセスは再帰的です.つまり、オブジェクトのメンバー・オブジェクトにユーザー定義のデフォルトコンストラクション関数がない場合、変更メンバー・オブジェクトのベース・データ型とポインタ・タイプの作成メンバーは、同じように0で初期値を割り当てられます.演算子deleteはオブジェクトを削除するために使用され、そのオブジェクトの構造関数が呼び出されます.

#include
using namespace std;
class point{
public:
    point():x(0),y(0)
    {
        cout<<"default constructor called."<int x,int y):x(x),y(y)
    {
        cout<<"constructor called."<cout<<"destructor called."<int getx() const {return x;}
    int gety() const {return y;}
    void movee(int newx,int newy)
    {
        x=newx;
        y=newy;
    }
private:
    int x,y;

};
int main()
{
    cout<<"step one:"<new point;//      ,        ,          
    delete ptrl;//    ,        
    cout<<"step two:"<new point(1,2);//      ,       ,            
    delete ptrl;
    return 0;
}