※ ChatGPTを利用し、要約された質問です(原文:【C++】0保証の有無)
C++初心者のための0保証の有無
Cの開発経験のみで、C++に関しては初心者です。
下記のサンプルコードで、main()関数にてobj1.xとobj2.y
の初期値設定をしているのですが、
obj1.yとobj2.xに関しては何も設定していません。
obj2.xはobj1.xの値をコピーしているので問題ないと思いますが、
obj1.yは不定な値をインクリメントする事には
ならない(0保証される)のでしょうか?
(出力結果を見ると、0が入っていたと認識できるんですが、
結果論で片付けるのはイヤなので・・・)
以下、サンプルコード
----------------------------------
#include<iostream>
using namespace std;
class POINT {
public:
long x;
long y;
void operator ++(int n) {
x++; y++;
}
POINT operator ++() {
++x; ++y;
return *this;
}
} obj1 , obj2 ;
int main() {
obj1.x = 10; obj2.y = 5;
obj2 = ++obj1;
obj2++;
cout << "x = " << obj1.x << "\ty = " << obj1.y << '\n';
cout << "x = " << obj2.x << "\ty = " << obj2.y << '\n';
return 0;
}
----------------------------
お礼
そういう区切りがあるわけですね。 試しにPOINTクラスをローカルで宣言してみたら、 確かにゴミ値が入る事が確認できました。 回答ありがとうございます。