あるクラスモジュールを使用しているプログラムがあります。
そのクラスモジュールのヘッダが変更されましたが、クラス内で宣言されている関数やメンバ変数には変更がありません。
ただ、関数やメンバ変数の順番が変更されました。
この場合、クラスモジュールを利用している呼び出し側のプログラムは再コンパイルが必要でしょうか?
VC++
1main(){ 2 A a; 3 a.func1(); 4 return; 5} 6class A{ 7 int func1(); 8 int a; 9 int func2(); 10 int b; 11}; 12//変更1 13class A{ 14 int a; 15 int b; 16 int func1(); 17 int func2(); 18}; 19//変更2 20class A{ 21 int a; 22 int b; 23 int func2(); 24 int func1(); 25};
mainが記述されているプロとclassAが記述されているモジュールは別プロです。
上記したような「変更1」又は「変更2」とした場合、関数のエントリポイントが変わると思うので、mainを記述しているプロがclassAモジュールをリンクしている時には再コンパイルが必要かと思われますが、再コンパイルしなくてもclassAのfunc1()、func2()は正しい動作となるでしょうか?
もし、再コンパイルが必要なく動作が保証されるのでしたら、なぜ動作が保証されるのか理由をお教え願えると助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/30 05:21