コンストラクタとデストラクタ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* コンストラクタとデストラクタ [#dbfefa73]
初期化しないプログラムは殺せ
#contents
** コンストラクタ [#r0b6292e]
クラスのインスタンスが作られるときに実行される特別なメソ...
戻り値はなし(というかオブジェクトが返るのか?)。~
[[オーバーロード>オーバーロードとオーバーライド]]できる。...
// C++
class Hoge {
private:
int i;
public:
Hoge( void ) : i(42) // C++でのメンバー初期化構文
{
}
};
// Java
public class Hoge {
private int i;
public Hoge(void) {
this.i = 42;
}
}
こんな感じで書く。
Hoge foo = new Hoge(); // C# or Java
Hoge foo; // C++
Hoge* foo = new Hoge; // C++
としてインスタンス化したときに,foo のメンバ i は42になる。
** デストラクタ [#m7a11b96]
インスタンスが破棄されるときに自動実行。~
引数と返り値を持たない。~
名前はクラス名の先頭にチルダ( ~ )を付けたもの。(命名規則...
// C++
class Hoge{
private:
int i;
public:
~Hoge(){
i = 0;
}
};
こんな風に書くとインスタンスの破棄時にiが0になります。
C++の場合
Hoge* foo = new Hoge();
として
delete foo;
なんて書くとデストラクタが実行されるわけですな。~
ただ,Javaなんかだと delete 演算子が無いので、莫大なメモ...
(デストラクタが実行されないわけでは無くて、ガベージコレ...
// Javaってデストラクタあったっけ?
// ↑ファイナライザなるものがガーベジコレクション時に実行...
終了行:
* コンストラクタとデストラクタ [#dbfefa73]
初期化しないプログラムは殺せ
#contents
** コンストラクタ [#r0b6292e]
クラスのインスタンスが作られるときに実行される特別なメソ...
戻り値はなし(というかオブジェクトが返るのか?)。~
[[オーバーロード>オーバーロードとオーバーライド]]できる。...
// C++
class Hoge {
private:
int i;
public:
Hoge( void ) : i(42) // C++でのメンバー初期化構文
{
}
};
// Java
public class Hoge {
private int i;
public Hoge(void) {
this.i = 42;
}
}
こんな感じで書く。
Hoge foo = new Hoge(); // C# or Java
Hoge foo; // C++
Hoge* foo = new Hoge; // C++
としてインスタンス化したときに,foo のメンバ i は42になる。
** デストラクタ [#m7a11b96]
インスタンスが破棄されるときに自動実行。~
引数と返り値を持たない。~
名前はクラス名の先頭にチルダ( ~ )を付けたもの。(命名規則...
// C++
class Hoge{
private:
int i;
public:
~Hoge(){
i = 0;
}
};
こんな風に書くとインスタンスの破棄時にiが0になります。
C++の場合
Hoge* foo = new Hoge();
として
delete foo;
なんて書くとデストラクタが実行されるわけですな。~
ただ,Javaなんかだと delete 演算子が無いので、莫大なメモ...
(デストラクタが実行されないわけでは無くて、ガベージコレ...
// Javaってデストラクタあったっけ?
// ↑ファイナライザなるものがガーベジコレクション時に実行...
ページ名: