X



C++難しすぎワロタwww
■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:24:18.794ID:GiMWC3fn0
ヘッダーで定義した変数ってコンストラクタで初期化するのはわかったんだがコンストラクタ内で直接初期化しないとまずい?
用意したsetterを呼んで間接的に初期化するのはダメ?
0002以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:26:24.390ID:uXdVPHha0
そもそもコンストラクタで初期化しなきゃならない変数にセッター用意する必要性
0003以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:30:44.689ID:fyCl868Y0
コンストラクタあんま使わんな
0004以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:31:39.905ID:MhwGi1Nw0
それは初期化ではなく代入だ
class A
{
public:
A(int x, int y)
{
x = x;
y = y;
}
}
こういうの他の言語では初期化って言われるけどC++では代入だからその違いをちゃんと把握しているなら好きにすればいい
0005以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:32:51.781ID:uXdVPHha0
>>4
コンストラクタも知らんバカは黙ってろよ
0006以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:34:16.363ID:GiMWC3fn0
>>4
これ初期化じゃないのか…
0007以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:34:54.997ID:MhwGi1Nw0
>>5
???
C++のコンストラクタを用いた初期化はこうだぞ
C++知らんならレスしない方がいいぞ

class A
{
public:
A(int x, int y) : x(x), y(y)
{
}
int x;
int y;
}
0008以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:37:40.756ID:GiMWC3fn0
>>2
DBから取ってきた値を格納して画面表示するモデルクラスなんだが、画面から値変更があるからsetterを用意してる
モデルのインスタンス生成の方が先だから初期化されてない値が参照されることはまずないんだが、念のためコンストラクタ内で初期化しようと思って…
0009以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:37:50.852ID:uXdVPHha0
x=a; ←代入
int x=a; ←初期化付き宣言
0010以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:38:19.315ID:GiMWC3fn0
>>7
あー、そういうことね
うっかりしてたわ
確かにこれだな
0011以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:40:40.572ID:MhwGi1Nw0
>>8
コンストラクタ内で初期化しとかないとsetterを使った間接的な初期化(実際には代入)がされるまで無駄にデフォルト値が入っちゃうからちゃんと初期化するべき
0012以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/02/12(日) 20:41:46.489ID:GiMWC3fn0
>>11
ありがとう
マジで助かった
必ず初期化するようにする
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況