はじめまして。
いつも色々と質問を読まさせて頂いています。
早速タイトルの質問についてですが、for文の中でループさせながらインスタンスを生成しようとしています。
for (int i=0; i<10; i++) {
MyObject *obj = new MyObject();
int intX = new int(100);
// メモリのアドレスを確認
printf("%p¥n", &obj);
printf("%p¥n", &intX);
}
この結果、
0xbfffd7dc
0xbfffd7f0
0xbfffd7dc
0xbfffd7f0
0xbfffd7dc
0xbfffd7f0
0xbfffd7dc
0xbfffd7f0
.
.
のようになり、どうも同じメモリアドレスを参照したインスタンスが生成されているようです。
やりたい事は、10回のインスタンスの生成をforで手抜きして行いたいのですが、この方法ですとすべて同じインスタンスとなってしまい、
別の処理でとある一つのインスタンスに変更を加えると、すべてのインスタンスにも変更がかかってしまいます。
これを実現する方法はあるのでしょうか。
解決方法として、forを使わずに、
MyObject *obj1 = new MyObject();
MyObject *obj2 = new MyObject();
.
.
とやれば別アドレスの参照となることは分かったのですが。。。
初歩的な質問だと思いますが、お知恵をお借りできればと思います。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
&obj だから、インスタンスじゃないです。
MyObject *型の変数objが格納されているアドレスが出力されています。newで生成されたインスタンスのアドレスなら obj です。
printf("%p¥n", &intX);
こっちも同様に、int型の変数intXが格納されているアドレスです。
さらに、intはクラスでく只の値なので、インスタンスは作られません。
C/C++のメモリ関係は、他の高級言語に比べると、かなりCPU寄りです。
ポインタについて、もっと勉強するのがいいと思います。
kmeeさん、返信ありがとうございます。
>MyObject *型の変数objが格納されているアドレスが出力されています。
そうでした。。
ポインタ変数のアドレスでした。
>ポインタについて、もっと勉強するのがいいと思います。
はい、もっと勉強します。
ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- Java インスタンス ダウンキャストについて以下の解釈であっているか教えて欲しいです。 サブクラスをスーパー 1 2022/03/27 18:53
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
生成したインスタンスを削除す...
-
インスタンス参照でアクセスで...
-
「インスタンス」の意味をわか...
-
newしないインスタンス?実体化...
-
JavaのSingletonパターンのpriv...
-
VB.NET getとsetの概念がわかり...
-
文字列を日付に変換でParseExce...
-
SQLを連続発行する時の正しい(?...
-
javaのクラスの作り方、エラー...
-
フォームのCheck boxとOLEObjec...
-
C# 外部のDLLの名前空間取得方...
-
ファイル読み込み/書き込み速度...
-
【java】コンストラクタの処理...
-
インスタンス生成で、○○.xxx();...
-
C#「オブジェクト参照が必要で...
-
C#において、同じインスタンス...
-
カンマ区切りの数値文字列を数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
newしないインスタンス?実体化...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
フォームの存在をチェックする方法
-
変数の参照でエラーが出てしま...
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
エクセル(複数インスタンス)...
-
他のファイルの変数参照
おすすめ情報