このコードは未定義の動作を引き起こしますか? または、これで問題が発生することはありますか? (関数なしで完全なクラスをコピーし、 public 修飾子を持つ変数だけをコピーし、このポインターをスローするプライベートメンバーを変更します) 例:
#include <iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point(int x, int y) {
this->x = x;
this->y = y;
}
void Print() {
cout << "(" << x << ", " << y << ")" << endl;
}
};
struct PointHack {
int x;
int y;
};
int main() {
Point a(4, 5);
a.Print();
((PointHack *) (&a))->x = 1;
((PointHack *) (&a))->y = 2;
a.Print();
return 0;
}
出力:
(4, 5)
(1, 2)
(もちろんオリジナルメンバーオーダーで)