new_del.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream>
int main(){
int *p;
p = new int(); // int 型の領域を動的確保
*p = 123;
std::cout << *p << std::endl;
delete p; // 動的に確保した領域を解放
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.lang]$ ./new_del
123
C++ では変数を初期化するときに, 下記の方法がある:
int num = 100;
int num(100);
p = new int(100);
注意 1:
C++ では [代入] と [初期化] は異なる. コンストラクタが呼び出されるのは [初期化]
注意 2:
new 演算子はコンストラクタを呼び出す
delete 演算子は デストラクタを呼び出す
次に new 演算子を使って, 配列用の領域を確保してみる.
array.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream>
int main(){
using namespace std;
int *p;
int i;
p = new int[10]; // int 型 10 個分の領域を動的確保
for(i = 0; i < 10; i++){
p[i] = i;
cout << p[i] << endl;
}
delete [] p; // 動的に確保した領域を解放
return 0;
}
|
上記プログラムの実行結果は:
[wtopia cpp.lang]$ ./array
0
1
2
3
4
5
6
7
8
9
new 演算子を使って, クラスをインスタンス化できる:
#include <iostream>
int main(){
CSample *p;
p = new CSample(100);
cout << p->Get() << endl;
delete p;
return 0;
}